Qt——界面外观
作者:互联网
Qt风格
使用setStyle()
来调用指定的风格
- 默认可用:windows、fusion
- 特定平台有效:windowsxp、windowsvista、gtk、macintosh
呈现的效果如下面图是一样的
#include <QStyleFactory>
QApplication a(argc, argv);
a.setStyle(QStyleFactory::create("fusion"));
windows
fusion
windowsxp
调色板
- 还要学习补充如何设置不同颜色组的颜色
下图为使用函数QApplication::palette()
查看调色板
其中的常量意思如下表(带Text为前景色)
代码实践(不足:针对一个空间将所有组颜色设为一样)
QPalette palette = this->palette(); //获得调色板
qDebug() << palette;
QColor color = 0xff000110; //可用内置颜色如 Qt::darkGray;
palette.setColor(QPalette::Window,color); //改颜色
this->setPalette(palette); //设置更改的调色板
qDebug() << palette;
效果和输出
Qt样式表
单一简单控件
下面两种方法不能同时存在,否则有一方会显示不出来
实现方式一
- 使用函数
QApplication::setStyleSheet()
可以设置到整个应用程序 - 使用函数
QWidget::setStyleSheet()
可以设置到某一个指定部件
//设置某一个部件
ui->pushButton->setStyleSheet("background:yellow");
//如果一个窗口下某一类都是同样设置
setStyleSheet("QPushButton{background:blue} QLCDNumber{background:black}");
第二行代码效果如下
实现方式二
在设计界面下,鼠标右击,使用样式表
样式表的规则
特殊情况
- 多个选择器&同一声明:逗号隔开
QPushButton, QLineEdit, QComboBox{color:red}
- 一个选择器&多个声明:分号隔开
QPushButton{color:red, background-color:white}
- 选择器各种类型
有子控件的复杂控件
如QComboBox
的下拉控件
QComboBox::drop-down{
color:red;
}
伪状态
用来限制样式显示的状态,用 :
setStyleSheet("QPushButton:hover{color:blue}");
则此时只有鼠标悬停在按钮上才会变色
拓展
QPushButton:!hover{color:blue}
:叹号表示否QPushButton:hover:checked{color:blue}
:冒号表示与QPushButton:hover,QPushButton:checked{color:blue}
: 逗号表示或
冲突怎么办
QTextEdit#textEdit_dragIn{ color:black }
QTextEdit{ color:red }
此时textEdit_dragIn
这个控件有冲突,就遵循特殊的选择器优先,则会变为黑色
自定义部件外观
使用样式表时,所有部件的样式组成
换肤
文件.qss
QFile file(":/*.qss");
file.open(QFile:ReadOnly);
QString styleSheet = QString(file.readAll());
dlg->setStyleSheet(styleSheet);
标签:控件,外观,界面,Qt,color,setStyleSheet,QPushButton,选择器,red 来源: https://blog.csdn.net/waterMelon_eater/article/details/87978417