QStyleFactor和QPalette
创始人
2024-01-25 08:57:46
0

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

QStyle常见的子类有:

  • QStyleFactory类
  • QPalette类

QStyleFactor类 

函数为:

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

获取有用的keys()

    QStringList qs=QStyleFactory::keys();//存放本机可用的keysfor(int i=0;i

各种样式的预览 :

QComboBox的样式区别:

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

1.设置QApplication的样式 

#include "widget.h"#include 
#include
int main(int argc, char *argv[])
{QApplication a(argc, argv);a.setStyle(QStyleFactory::create("Fusion"));//设置样式Widget w;w.show();return a.exec();
}

2.设置QWidget的控件的样式

    QPushButton *push=new QPushButton(this);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的调色板:

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

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

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

 QLabel的调色板

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

 

相关内容

热门资讯

孟加拉国空军一架教练机在学校坠... 总台记者获悉,据孟加拉国消防部门消息,当地时间21日13时30分左右,孟加拉国空军一架教练机在一所学...
新华视点|多地经开区培育新质生...   近年来,多地经开区立足产业优势,以科技创新为引擎,培育新质生产力。各地通过技术攻关、政策赋能、模...
记者手记丨外国记者在江西感知中...   新华社江西赣州7月21日电记者手记|外国记者在江西感知中国高质量发展  新华社记者黎藜  “人类...
尺素金声丨三个“首次突破”,凸...   出口规模历史同期首次突破13万亿元,同比增长实现7.2%;有进出口实绩的外贸企业历史同期首次突破...
多个全球第一!这份“成绩单”与...   国新办今天举行“高质量完成‘十四五’规划”系列主题新闻发布会,多个部门相关负责人介绍了“十四五”...
欢乐过暑假,安全健康不放假 |...   暑假期间,孩子们宅家吃喝、外出玩乐时,如何做好安全防护,避免意外伤害?关于暑假期间安全与健康的几...
事关“地下生命”,有新发现!   研究显示:地震可为“地下生命”提供“燃料”  一项最新研究显示,地震等地壳内部构造活动瞬间释放的...
俄媒首次公开攻击型无人机生产基...   当地时间7月20日,俄罗斯红星电视台首次曝光位于俄联邦鞑靼斯坦共和国境内的一个无人机生产基地。这...