本文只介绍如何设置参数,不讲解有哪些属性参数。
qss通过/*selector:declaration*/设置其属性参数等
我们在本地创建一个qss文件,然后在代码中加载即可
QFile qss("testqss.qss");
qss.open(QFile::ReadOnly);
qApp->setStyleSheet(qss.readAll());
qss.close();
1、简单的qss语法
/*设置QWidget且obejectname为testwidget的属性*/
QWidget#testwidget
{
background-color:rgb(0,0,0);
}
/* cpp中的语句
QWidget* pWidget = new QWidget;
pWIdget->setObjectName("testwidget");
*/
/*所有QPushButton及它的子类生效*/
QPushButton
{
color:rgb(0,0,0);
}
/*只对QPushButton生效,对其子类不生效*/
.QPushButton
{
color:rgb(0,0,255);
}
/* cpp中的代码
QPushButton* p3 = new CPushButtonSub("subbutton", this);
CPushButtonSub是自己写的一个继承自QPushButton的类,QT判断是否是子类还需要加上Q_OBJECT宏,QT使用的不是C++的运行时多态
p3是不会有上面.QPushButton的属性的,但是会使用前面一个QPushButton的属性的
*/
/*对objectname=testbtn并且有一个属性testProperty=true生效*/
/*此处使用testProperty="true"或则testProperty=true都可以*/
QPushButton#testbtn[testProperty="true"]
{
color:rgb(255,255,255);
}
cpp代码示例
QPushButton* p1 = new QPushButton("objname-testbtn", this);
p1->setObjectName("testbtn");
p1->setProperty("testProperty", true);
/*在QWidget#testwidget中,孩子及子孩子中类型QLineEdit的属性设置*/
/*即设置界面objectnname为testwidget下的所有QLineEdit的属性*/
QWidget#testwidget QLineEdit
{
color:rgb(0,0,100);
}
代码示例
QWidget* pTestWidget = new QWidget(this);
pTestWidget->setObjectName("testwidget ");
QLineEdit* p4 = new QLineEdit(pTestWidget);
/*在QWidget#testwidget的孩子中QLabel的属性设置,不包括子孩子*/
QWidget#testwidget > QLabel
{
color:rgb(0,0,0);
background:rgb(255,0,0);
}
代码示例
QWidget* pWidgetChild = new QWidget(this);
pWidgetChild->show();
pWidgetChild->move(300, 200);
pWidgetChild->setWindowTitle("objname-childwidget");
pWidgetChild->setObjectName("childwidget");
QLabel* p5 = new QLabel(pWidgetChild); // p5是testWidget的子widget的孩子,是不会使用上面的属性的
/*多个类型对象设置相同的属性值*/
QToolButton,QComboxBox
{
color:red
}
2、/*伪状态QWidget:xxx*/
即各个控件所支持的一些状态信息
/*伪状态*/
.QPushButton:hover
{
color: white
}
.QPushButton:!hover
{
color: blue
}
QCheckBox:hover:checked
{
color: red
}
QCheckBox:unchecked /*或QCheckBox:!checked也可以*/
{
color: blue
}
QCheckBox:!hover
{
color: yellow
}
3、子控件
/*子控件 QWidget::xxx*/
QComboBox::drop-down
{
image: url(dropdown.png);
subcontrol-origin:margin;
}
4、冲突的解决
会使用更特殊的进行设置,看着都不特殊,就会以qss后面一句为准
参考QT的帮助文档:
The Style Sheet Syntax
Qt Style Sheets Reference
下一篇将介绍各个控件有哪些属性,比如image,color属性等
再往下应该介绍有哪些伪状态
再往下介绍有哪些子控件