QStyle常见的子类有:
- QStyleFactory类
- QPalette类
函数为:
create() | 创建并返回与给定键匹配的QStyle对象 |
keys() | 返回有效键的列表 |
获取有用的keys()
- QStringList qs=QStyleFactory::keys();//存放本机可用的keys
- for(int i=0;i<qs.length();i++)
- {
- qDebug()<<qs[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::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 *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);