• QStyleFactor和QPalette


    Qt中的分格都继承自QStyle,QStyle类是一个抽象基类,封装了一个GUI的外观。

    QStyle常见的子类有:

    • QStyleFactory类
    • QPalette类

    QStyleFactor类 

    函数为:

    create()创建并返回与给定匹配的QStyle对象
    keys()返回有效键的列表

    获取有用的keys()

    1. QStringList qs=QStyleFactory::keys();//存放本机可用的keys
    2. for(int i=0;i<qs.length();i++)
    3. {
    4. qDebug()<<qs[i];
    5. }

    各种样式的预览 :

    QComboBox的样式区别:

     使用setStyle(QStyleFactory::create(const QString &key))来设置控件样式

    1.设置QApplication的样式 

    1. #include "widget.h"
    2. #include
    3. #include
    4. int main(int argc, char *argv[])
    5. {
    6. QApplication a(argc, argv);
    7. a.setStyle(QStyleFactory::create("Fusion"));//设置样式
    8. Widget w;
    9. w.show();
    10. return a.exec();
    11. }

    2.设置QWidget的控件的样式

    1. QPushButton *push=new QPushButton(this);
    2. push->setStyle(QStyleFactory::create("Fusion"));

    更多内容可以在帮助文档搜:Style and Style Aware Widgets  

     

    QPalette类(调色板)

    调色板的颜色组包含三种状态:

    • 活动颜色组:QPalette::Active  用于获取键盘的焦点
    • 非活动颜色组:Qpalette::Inactive 用于其他没有获取键盘焦点的窗口
    • 已禁用颜色组:QPalette::Disabled  用于一些原因而不可用的部件

     构造函数为:

     常用的函数为:

    setcurrentColorGroup()设置颜色组
    setColor()设置颜色
    setBrush()设置画笔

    主要的颜色角色:

    QPalette::Window一般背景色
    QPalette::WindowText一般前景色
    QPalette::Base主要用作文本输入小部件的背景色,但也可用于其他绘画 - 例如组合框下拉列表和工具栏手柄的背景。它通常是白色或其他浅色。
    QPalette:AlternateBase在具有交替行颜色的视图中用作备用背景色
    QPalette::ToolTipBase用作QToolTip和QWhatsThis的背景色
    QPalette::ToolTipText

    用作QToolTip和QWhatsThis的背景色

    QPalette::PlaceholderText用作各种文本输入小部件的占位符颜色
    QPalette::Text使用的前景色
    QPalette::Button常规按钮背景色
    QPalette::ButtonText常规按钮前景色
    QPalette::BrightText通常用于需要绘制对比度较差的文本
    • palette() 获取调色板
    • setPalette() 设置调色板

    QPushButton的调色板:

    1. QPushButton *push=new QPushButton(this);
    2. push->setStyle(QStyleFactory::create("Fusion"));
    3. QPalette pa=push->palette();//获取按键的调色板
    4. pa.setColor(QPalette::Button,Qt::red);//把按键背景调为红色
    5. pa.setColor(QPalette::ButtonText,Qt::black);//把按键文本颜色设置为黑色
    6. push->setPalette(pa);//设置调色板

    QLineEdit的调色板:(QTextEdit的调色板类似)

    1. QLineEdit *edit=new QLineEdit(this);
    2. edit->resize(200,50);
    3. edit->move(100,100);
    4. QPalette pa1=edit->palette();//获取调色板
    5. pa1.setColor(QPalette::Base,Qt::red);//设置背景色为红色
    6. pa1.setColor(QPalette::Text,Qt::blue);//设置文本颜色为蓝色
    7. edit->setPalette(pa1);

     QLabel的调色板

    1. QLabel *label =new QLabel(this);
    2. label->resize(200,200);
    3. label->move(300,300);
    4. label->setFrameShape(QFrame::Box);//设置边框
    5. label->setText("label");
    6. QPalette pa2=label->palette();//获取调色板
    7. pa2.setColor(QPalette::Window,Qt::blue);
    8. pa2.setColor(QPalette::WindowText,Qt::yellow);
    9. label->setAutoFillBackground(true);//保存小组件背景是否自动填充,label需要设置不然背景颜色不可用
    10. label->setPalette(pa2);

     

  • 相关阅读:
    Shapes
    【RocketMQ】集群的搭建与高可用
    二元关系及关系代数中的象集、除运算
    docker搭建Hadoop 3节点及N节点集群完整教程
    从中间表取数更新TW销售合同登记数据(含表体)
    实验四.路由器静态路由的配置
    在数据分析中,对缺失值解决方案的分析
    Mybatis学习笔记——mybatis的整体架构
    Redis 有序集合操作实战(全)
    Java背包
  • 原文地址:https://blog.csdn.net/qq_45303986/article/details/127887890