• QSS(Qt样式表)概念


    Qt样式表是一个可以自定义部件外观的十分强大的机制,除了QStyle更改的样式,其他的都可以由QSS修改。由于受到Html的CSS启发,所以叫QSS。

    • 代码添加样式表
    • ui界面上添加样式表

    代码添加样式表:

    setStyleSheet()添加样式表

    ui界面中添加两个控件:pushButton 和lineEdit 

     修改两个部件的背景颜色:

    1. ui->pushButton->setStyleSheet("background:blue");
    2. ui->lineEdit->setStyleSheet("background:yellow");

     修改同一类控件的方法:

    格式为:   控件类名 {   内容   }

    1. QPusgButton{background:blue}
    2. QLabel{background:yellow}

    ui界面中的使用:

    右键点击对象,点击改变样式表

     可以根据上面的选项添加内容:


     Qt样式表的语法:

    一:样式规则

    每个样式由选择器声明组成

    • 选择器可以有多个用,隔开
    • 样式表可以不区分大小写:  color   Color  COLOR 都可以使用,但类名、对象名和Qt属性名区分大小写
    • 样式中的属性用;隔开

    QPushButton {color:red}

    • QPushButton为选择器
    • {color:red} 声明
    • color为属性
    • red为值
    1. QPushButton
    2. {
    3. color:red//等价于Color:red COlor:rad 例如color,background等不区分大小写
    4. }
    5. QPushButton,QLabel,QLineEdit//多个选择器用,隔开
    6. {
    7. color:red;//多个的话用;隔开
    8. background-color:white
    9. }

    二:选择器的类型 

    选择器示例说明
    通用选择器*匹配所有部件
    类型选择器QPushButton匹配所有QPushButton实例和它的所有子类
    属性选择器QPushButton[flat="false"]匹配QPushButton的属性flat为false的实例
    类选择器.QPushButton匹配所有QPushButton实例,但不包含它的子类
    ID选择器QPushButton#button匹配QPushButton中名为button的实例
    后代选择器QDialog QPushButton匹配所有QPushButton实例,但必须为QDialog的子孙部件
    孩子选择器QDialog >QPushButton匹配所有QPushButton实例,但必须为QDialog的直接子部件

    三:子控件

    QComboBox::drop-down{.....}

    • drop-down 代表上下箭头
    • 使用::来连接子控件
    在帮助文档中搜索  Qt Style Sheets Reference  搜索更多子控件

    四:伪状态

    常用的伪状态:

    :checked该项目已选中
    :unchecked该项目未选中
    :disabled该项目已禁用
    :editableQComboBox可编辑
    :edit-focus具有编辑焦点
    :focus输入焦点
    :hover鼠标悬停在项目上
    :read-only只读
    :pressed鼠标按下
    • 伪状态:在放在选择器之后用:隔开
    • 伪状态可以使用  !来表示否定
    • 可以使用多个伪状态(与的效果)   :hover:pressed()
    • 用,连接可以达到(或的效果)
    • 伪状态可以和子控件一起使用
    1. QPushButton:hover//鼠标悬停
    2. {
    3. color:red
    4. }
    5. QPushButton:!hover//鼠标不悬停
    6. {
    7. color:red
    8. }
    9. QPushButton:hover:preassed//鼠标悬停且鼠标点击
    10. {
    11. color:red
    12. }
    13. QPushButton:hover,QPushButton:pressed//鼠标悬停或鼠标点击
    14. {
    15. color:red
    16. }
    17. QComboBox::drop-down:pressed//子控件和鼠标悬停
    18. {
    19. color:red
    20. }

    五:冲突的解决

    解决方法为:

    • 特殊的选择器优先
    • 有伪装比没伪装优先
    • 特殊性相同,后出现的优先
    • 当父类和本身都有样式表并有冲突时,优先使用本身的样式表

     六:继承关系

    使用样式表时,部件并不会自动从父部件继承字体和颜色设置

    想要继承到子部件需要这样设置样式表。

    1. 假设 QPushButton是QGroupBox的一个子部件
    2. //这样的话颜色会设置到所有子部件
    3. //注意*前面有一个空格
    4. QGroupBox,QGroupBox *
    5. {
    6. color:red;
    7. }

     七:设置QObject属性

    在Qt4.3之后,任何可设计的Q_PROPERTY都可以使用"qproperty-属性名称”语法来设计样式表。

    1. QPushButton{qproperty-pixmap:url(.....)}
    2. Qlabel{qproperty-iconSize:20px 20px;}

  • 相关阅读:
    深度学习 Day 16——利用卷神经网络实现咖啡豆的识别
    闲话Python编程-类
    【Android11】在内置的Tvsettings的界面中显示以太网Mac地址
    Spring之AOP源码解析(中)
    (附源码)计算机毕业设计SSM基于框架的在线健康系统设计与实现
    【OpenCV】基于opencv的视频间隔抽帧脚本
    spring 中的路径匹配
    提高应用程序测试覆盖率的 4 个步骤
    基于php+MYSQL的旅游景点攻略的设计与实现毕业设计源码301216
    springboot整合xxl-job分布式定时任务【图文完整版】
  • 原文地址:https://blog.csdn.net/qq_45303986/article/details/127890439