zoukankan      html  css  js  c++  java
  • Qt样式表使用注意项

    Qt样式表使用注意项

    <1>.StyleSheet的使用
    StyleSheet文件的默认后缀名为qss,可以通过命令行参数-stylesheet filename.qss来设置样式表,也可以通过QApplication::setStyleSheet 或 QWidget::setStyleSheet来设置应用程序或特定控件要使用的样式表
    ::setStyleSheet函数的参数是字符串(不是qss文件的名字,而是样式表的内容),所以直接使用的话,不方便一次设置大量的规则,但是可以使用资源文件将qss样式表嵌入到程序中,然后通过QApplication::setStyleSheet来使用,例如:

    QFile file(":/qss/mystylesheet.qss"); 
    file.open(QFile::ReadOnly); 
    app.setStyleSheet(file.readAll());

    <2>.样式表描述规则
    例如:

    QComboBox#myComboBox::down-arrow:pressed{ 
        position: relative; 
        top: 1px; left: 1px; 
    } 

    其中:
    QComboBox#myComboBox 这一部分叫类型选择器(Type Selector),QComboBox指定了对象类名,#name指定对象的实例名(非必须)
    down-arrow 子控件描述符(subcontrol),和前面的字段用::隔开,这里表示组合框的下拉按键
    pressed 伪状态(Pseudo-States)描述符,和前面的字段用:隔开,这里表示压下状态
    以上除了第一个字段,都不是必须,而是进一步限制规则适用范围,属性定义,由成对的属性名:属性值组成,用;分隔。

    <3>.优先级关系
    更加具体的类型描述符定义的规则拥有更高优先级,例如(有鼠标悬停的按钮的文本颜色就是白色的,否则为红色):

    QPushButton:hover { color: white }
    QPushButton { color: red }

    后定义的规则优先级高于前面的规则,例如(这种情况颜色为红色):

    QPushButton:hover { color: white }
    QPushButton:enabled { color: red }

    样式表不考虑类得继承优先关系,例如(这种情况颜色为灰色):

    QPushButton { color: red }
    QAbstractButton { color: gray }

    控件自身的样式表的优先级高于父控件或应用程序的样式表,例如:

    qApp->setStyleSheet("QPushButton { color: white }"); 
    myPushButton->setStyleSheet("* { color: blue }");

    <4>.样式表继承
    在标准的CSS样式表中,一个控件的字体和颜色属性如果没有明确设定,那么将自动继承自父控件,而在QT的样式表中,不会自动继承,例如:

    qApp->setStyleSheet("QGroupBox { color: red; } ");

    这种情况下,对于GroupBox中的添加的子控件,不会自动设置其颜色属性,如果要设置子控件的属性,需要明确设定:

    qApp->setStyleSheet("QGroupBox, QGroupBox * { color: red; }");

    注意,这里的继承和上面的层叠不一样,层叠指不同样式表设置同一个对象,继承指的则是样式表规则中选择器对控件层级关系的影响

  • 相关阅读:
    蓝牙低功耗(Bluetooth Low Energy)
    Android 蓝牙(概述)
    Android 学习笔记之 Activity 简介
    Android 学习笔记之常用控件
    Android 学习笔记之界面布局
    委托和事件(C#)
    Java 资源汇总
    如何阅读英文原版教材
    Combobox 控件绑定数据
    《将博客搬至CSDN》
  • 原文地址:https://www.cnblogs.com/sz-leez/p/4248110.html
Copyright © 2011-2022 走看看