zoukankan      html  css  js  c++  java
  • QtQuick自定义主题以及控件样式指引

    自定义控件样式

    请在Qt帮助索引中输入Customizing a Control进行查看

    不过实际用下来感觉除非你想自己实现一套效果复杂的UI或是创造一个全新控件,比如:给UI添加模糊、虚化等ShaderEffect效果。不然不推荐用这个。比如本人就是想把CheckBox的大小改小,同时不改变显示样式,这个就很难办到。

    系统自带的几种主题风格

    1. Default Style
    2. Fusion Style
    3. Imagine Style
    4. Material Style
    5. Universal Style
      其中Imagine Style是使用图片定制风格,图片需要按照指定的命名来放置,具体操作请看文档:
      http://doc.qt.io/qt-5/qtquickcontrols2-imagine.html
    在c++中使用QQuickStyle
    QQuickStyle::setStyle("Material");
    

    具体内容请在帮助索引中搜索 QQuickStyle

    命令行中设置
    ./app -style material
    
    在Qt的环境变量中设置
    QT_QUICK_CONTROLS_STYLE=universal ./app
    
    使用配置文件
    [Controls]
    Style=Material
    

    官方的gallery案例用的是这种。
    网上有个哥们用的是:

    if (sty == "mat") {
        qputenv("QT_QUICK_CONTROLS_CONF", ":/qtquickcontrols2material.conf");
    } else {
        qputenv("QT_QUICK_CONTROLS_CONF", ":/qtquickcontrols2universal.conf");
    }
    

    本人用的是gallery案例中的方式,感觉通过设置环境变量来指定对应的conf不太灵活,所以上述方式仅供参考。

    想要看懂conf文件需要看以下两篇文档

    Qt Quick Controls 2 Configuration File

    文档:http://doc.qt.io/qt-5/qtquickcontrols2-configuration.html
    在默认情况下将文件放置于:/qtquickcontrols2.conf(也就是根目录)就会生效(需要设置QQuickStyle)

    Controls Section

    Style:定义全局控件样式

    XXXX Section

    对对应的style进行设置

    Font Configuration

    设置字体,有以下几个属性:

    1. Family
    2. PointSize
    3. PixelSize
    4. StyleHint
    5. Weight
    6. Style
    Palette Configuration

    Palette我不太清楚是干什么的

    Material Style

    文档:http://doc.qt.io/qt-5/qtquickcontrols2-material.html#material-theme-attached-prop

    你可以单独给某一些控件设置style,以下是对应的属性:

    accent
    Button {
        text: qsTr("Button")
        highlighted: true
        Material.accent: Material.Orange
    }
    
    background
    Button {
        text: qsTr("Button")
        highlighted: true
        Material.background: Material.Teal
    }
    
    elevation

    控制阴影的属性

    Pane {
         120
        height: 120
    
        Material.elevation: 6
    
        Label {
            text: qsTr("I'm a card!")
            anchors.centerIn: parent
        }
    }
    
    foreground
    Button {
        text: qsTr("Button")
        Material.foreground: Material.Pink
    }
    
    primary
    theme

    三个可选项:

    1. Material.Light
    2. Material.Dark
    3. Material.System
    Pane {
        Material.theme: Material.Dark
    
        Button {
            text: qsTr("Button")
        }
    }
    

    自定义主题

    文档:http://doc.qt.io/qt-5/qtquickcontrols2-customize.html#creating-a-custom-style
    推荐:http://www.cnblogs.com/Fuss/archive/2015/03/20/4353698.html

    代码没怎么看,Control用的是1.0,可以作为参考,Github上有关这种UI定制的代码还是比较多,建议先去知乎搜索 “请问有哪些优质又开源的qml应用”

  • 相关阅读:
    javascript 拷贝详解
    javascript 递归函数详解
    移动端布局解决方案
    Flexbox
    CSS中越界问题的经典解决方案
    移动应用测试方法与思路
    不是人家太装逼,而是我们太low
    GUI自动化测试策略
    GUI测试稳定性的关键技术
    GUI测试还能这么玩(Page Code Gen + Data Gen + Headless)
  • 原文地址:https://www.cnblogs.com/blueroses/p/8919041.html
Copyright © 2011-2022 走看看