界面外观和风格
Qt风格
获取风格
要获取系统中所有可用Qt风格,可以使用
QStyleFactory::keys
函数。要获取应用程序使用的风格,可以使用
style()
函数。
例如在KDE下执行:
qDebug()<<QStyleFactory::keys();
输出结果为:
("Breeze", "kvantum-dark", "kvantum", "Oxygen", "QtCurve", "Windows", "Fusion")
指定程序风格
要指定程序的风格,可以
使用
setStyle
函数。该函数在QApplication
和QWidget
都用。在程序运行时传入
-style [风格]
参数
例如:
int main(int argc, char *argv[]){
QApplication a(argc, argv);
a.setStyle(QStyleFactory::create("fusion")); // 使用 fusion 风格
MainWindow w;
w.show();
return a.exec();
}
和 :
qtcreator -style fusion
指定 qtcreator 使用 fusion 风格。
setStyle 函数常常配合 QStyleFactory::create 函数使用,QStyleFactory::create |
调色板和颜色
Qt使用 QPalette
设置小部件的颜色,为了方便地设置颜色,Qt提出了颜色组(color groups)和颜色角色的概念:
颜色组共有三种:
QPalette::Active 被用于拥有鼠标焦点的部件
QPalette::Inactive 被用于没有鼠标焦点的部件
QPalette::Disabled 被用于被禁用的部件
颜色角色的概念如下:
主颜色角色为:
枚举名 | 用途 |
QPalette::Window | 通用背景色 |
QPalette::WindowText | 通用前景色 |
QPalette::Base | 一般被用于列表的背景色。但是也可以被用于其他地方,比如combox候选列表的背景和工具栏的把手(handles)。一般为白色或其他亮色 |
QPalette::AlternateBase | 被用于视图的可选背景色,参阅:QAbstractItemView::setAlternatingRowColors |
QPalette::ToolTipBase | 工具栏提示和 |
QPalette::ToolTipText | 工具栏提示和 |
QPalette::PlaceholderText | 用于多种输入框的占位符颜色,该属性在5.12引入 |
QPalette::Text | 与WindowText类似 |
QPalette::Button | 按钮背景色 |
QPalette::ButtonText | 按钮前景色 |
QPalette::BrightText | 前景色,在某些情况下使用该颜色 |
用于3D效果的颜色角色:
枚举名 | 用途 |
QPalette::Light | 比 |
QPalette::Midlight | 介于 |
QPalette::Dark | 比 |
QPalette::Mid | 介于 |
QPalette::Shadow | 非常暗的颜色,默认为 |
用于被选择文本的颜色:
枚举名 | 用途 |
QPalette::Highlight | 用于指示被选择项目或当前项目的颜色,默认为 |
QPalette::HighlightedText | 用于与 |
用于超链接的颜色:
枚举名 | 用途 |
QPalette::Link | 未被点击的超链接的颜色,默认为 |
QPalette::LinkVisited | 已被点击的超链接的颜色,默认为 |
|
例如:
QPalette pale = ui->pushButton->palette();
pale.setColor(QPalette::Active,QPalette::ButtonText, Qt::red); // 在有焦点时设置字体颜色为红色
pale.setColor(QPalette::Button, Qt::green); // 设置按钮背景为绿色
ui->pushButton->setPalette(pale);
效果如下:
样式表
TODO