• QT学习_07_样式表的初步学习


    目录

    1 样式表语法基础

    2 举例说明

    3 方箱模型

    4 全局/局部的设定

     5 背景图片设定

    6 处理伪状态

    7 处理子控件

    后续:


    1 样式表语法基础

    Qwidget::setStyleSheet()或者QApplication setStyleSheet()
    selector {attribute: value}

    选择器  {属性: 值}

    比如:

    QLabel {color:red; …}

    也可以同时设定多个比如

    1. QCheckBox, QComboBox, QLabel {
    2. color:red;
    3. background-color: white;
    4. font:bold:
    5. }

    2 举例说明

    1. #include "widget.h"
    2. #include "ui_widget.h"
    3. Widget::Widget(QWidget *parent)
    4. : QWidget(parent)
    5. , ui(new Ui::Widget)
    6. {
    7. ui->setupUi(this);
    8. ui->label->setStyleSheet("QLabel{"
    9. "color:red;"
    10. "background-color:rgb(0,0,255);"
    11. "}");
    12. }
    13. Widget::~Widget()
    14. {
    15. delete ui;
    16. }

    运行结果

    3 方箱模型

    下面一张图就能说明

    4 全局/局部的设定

    话不多说,看代码注释和运行结果

    1. #include "widget.h"
    2. #include "ui_widget.h"
    3. Widget::Widget(QWidget *parent)
    4. : QWidget(parent)
    5. , ui(new Ui::Widget)
    6. {
    7. ui->setupUi(this);
    8. // 全局有效
    9. this->setStyleSheet("QLabel{"
    10. "color:red;"
    11. "background-color:rgb(0,0,255);"
    12. "}");
    13. // 局部修改
    14. ui->label->setStyleSheet("QLabel{"
    15. "color:white;"
    16. "background-color:black;"
    17. "}");
    18. }
    19. Widget::~Widget()
    20. {
    21. delete ui;
    22. }

    运行结果

     5 背景图片设定

    1. #include "widget.h"
    2. #include "ui_widget.h"
    3. Widget::Widget(QWidget *parent)
    4. : QWidget(parent)
    5. , ui(new Ui::Widget)
    6. {
    7. ui->setupUi(this);
    8. // 全局有效
    9. this->setStyleSheet("QLabel{"
    10. "color:red;"
    11. "background-color:rgb(0,0,255);"
    12. "}");
    13. // 局部修改
    14. /*
    15. // background-image:url(:/img/Image/Image1.jpg) 显示不全,复制平铺
    16. ui->label->setStyleSheet("QLabel{"
    17. "color:white;"
    18. "background-color:black;"
    19. "background-image:url(:/img/Image/Image1.jpg)"
    20. "}");
    21. */
    22. // "border-image:url(:/img/Image/Image1.jpg)" 可伸缩
    23. ui->label->setStyleSheet("QLabel{"
    24. "color:white;"
    25. "border-image:url(:/img/Image/Image1.jpg)"
    26. "}");
    27. // "border-image:url(:/img/Image/Image1.jpg) 100 100 100 100 strech strech" 可裁剪
    28. /*
    29. ui->label->setStyleSheet("QLabel{"
    30. "color:white;"
    31. "border-image:url(:/img/Image/Image1.jpg) 100 100 100 100 strech strech"
    32. "}");
    33. */
    34. }
    35. Widget::~Widget()
    36. {
    37. delete ui;
    38. }

    运行结果

    6 处理伪状态

    控件有各种状态, 当控件的状态改变之后,可以同时修改它的Style

    1. #include "widget.h"
    2. #include "ui_widget.h"
    3. Widget::Widget(QWidget *parent)
    4. : QWidget(parent)
    5. , ui(new Ui::Widget)
    6. {
    7. ui->setupUi(this);
    8. ui->pushButton->setStyleSheet("QPushButton {"
    9. "border: 2px outset green;"
    10. "}"
    11. "QPushButton:hover {"
    12. "border: 2px outset red;"
    13. "}"
    14. "QPushButton:pressed {"
    15. "border: 2px outset black;"
    16. "}"
    17. );
    18. }
    19. Widget::~Widget()
    20. {
    21. delete ui;
    22. }

     运行结果

    鼠标放上去后

    按下鼠标后

    注意:各种控件都有各种伪状态,如何去找到伪状态呢?

    打开QT的帮助文档:搜索 setStyleSheet👉Qt Style Sheets👉 Qt Style Sheets Reference👉List of Pseudo-States

    里面有各种伪状态的介绍。

    7 处理子控件

    子控件,比如下拉菜单那个三角形就是下拉菜单的一个子控件。 你如果想要单独修改它的一些style。 那就需要用子控件的方式。

    注意子控件的样式修改是两个:, 伪状态的样式修改是一个:

    另外,我们对于子控件的伪状态也是可以指定特定的样式的

    1. #include "widget.h"
    2. #include "ui_widget.h"
    3. Widget::Widget(QWidget *parent)
    4. : QWidget(parent)
    5. , ui(new Ui::Widget)
    6. {
    7. ui->setupUi(this);
    8. ui->pushButton->setStyleSheet("QPushButton {"
    9. "border: 2px outset green;"
    10. "}"
    11. "QPushButton:hover {"
    12. "border: 2px outset red;"
    13. "}"
    14. "QPushButton:pressed {"
    15. "border: 2px outset black;"
    16. "}"
    17. );
    18. ui->comboBox->setStyleSheet("QComboBox::drop-down {"
    19. "background-color:red;"
    20. "}"
    21. "QComboBox::drop-down:hover {"
    22. "background-color:green;"
    23. "}"
    24. );
    25. }
    26. Widget::~Widget()
    27. {
    28. delete ui;
    29. }

    运行结果:

    正常的下拉菜单控件的长这样子的

    当我添加了子控件样式代码后

    当我添加了子控件的伪状态样式代码后,

    注意:很多控件都包含子控件,那我怎么知道这控件它有哪些子控件可以单独修改style呢?

    打开QT的帮助文档:搜索 setStyleSheet👉Qt Style Sheets👉 Qt Style Sheets Reference👉 List of Sub-Controls

    里面有各种子控件的介绍。

    后续:

    样式表肯定不能直接这么写在构造函数里面,那么多样式表看着心就堵,所以下一篇文章考虑如何把样式表用单独的文件,或者多个不同的文件来写。参考链接:Qt学习_08_用独立的文件存放样式表_样式表文件-CSDN博客

    感谢您的阅读,欢迎留言讨论、收藏、点赞、分享。 

  • 相关阅读:
    Clickhouse与Doris的区别
    JMeter —— 接口自动化测试(数据驱动)
    PGP软件安装文件加密&解密&签名实践记录
    【入门】使用sklearn实现的KNN算法:鸢尾花数据集分类预测
    PAT 1066 AVL树模板
    Netty03——进阶
    第26期 | GPTSecurity周报
    我的Qt作品(19)使用Qt写一个轻量级的视觉框架---第2章,仿海康VM实现思维导图拖拽方式的算法流程图
    《uni-app》表单组件-Label组件
    什么是原生IP?原生IP与住宅IP有何区别?
  • 原文地址:https://blog.csdn.net/heqiunong/article/details/127649024