- 学习博主与子偕臧的Qt博文,看到通过设置控件的动态属性和设置样式表来做到更方便的样式表设计
动态属性:
QObject:setPropert()函数可以在运行时为类定义一个新的属性,称之为动态属性。动态属性是针对类的实例定义的。动态属性可以使用Qbjct:property()查询,就如在类定义里用 Q_PROPERTY 宏定义的属性一样。
例如,在数据表编辑界面上,一些字段是必填字段,就可以在初始化界面时为这些字段的关联显示组件定义一个新的required属性,并设置值为"true",如:
editName->setProperty("required","true"); comboSex-> setProperty("required". "true"); checkAgree-> setProperty("required", "true");
- 1
- 2
- 3
然后,可以应用下面的样式定义将这种必填字段的背景颜色设置为亮绿色
this->setStyleeSheet("*[required=\"true\"] {background-color: lime}");
- 之前写控件的样式表都是通过每个控件单独设置,在需要改变时很麻烦,这种方式就更简便了,感谢大佬
- 然后找到另一位大佬的样式表博文,写的更详细,感谢~
搬运如下:
1、QT样式表可以让你自定义任何一个QT控件的样式包括颜色、边框、背景等等(你想的到样式都可以),Qt样式表的概念、术语和语法与HTML的CSS样式表类似。
2、样式表是文本规范,
(1) QApplication::setStyleSheet()在整个应用程序上设置,一般在main()函数中:
QFile file(":/qss/abc.qss"); //工程控件样式表需要在qss/abc.qss里面
file.open(QFile::ReadOnly);
styleSheet = QLatin1String(file.readAll());
qApp->setStyleSheet(styleSheet);
file.close();
(2)一般形式也可以使用QWidget::setStyleSheet()在特定小部件(及其子部件)上设置。
例如:
QPushButton *btn = new QPushButton();
Btn-> setStyleSheet(“color : red”);//表示字体颜色为红色
如果在不同级别上设置了多个样式表,Qt将从所有设置的样式表派生有效样式表。这称为级联。
(3)在QT Designer 中设置
例如:在要修改样式的控件右击->改变样式表
针对单个控件按钮
也可也在顶级窗口右击控件->改变样式表
针对该窗口中所有的QLineEdit
二、样式表语法
样式的规则1:样式规则由选择器和声明组成。选择器指定哪些小部件受规则影响;声明指定应该在小部件上设置哪些属性。
如:QPushButton { color : red }。
<