版权声明:原创不易,如引用,请附原文链接 https://blog.csdn.net/Chiang2018/article/details/89221791
Qt样式表通过调用Qidget::setStyleSheet()或者QApplication::setStyleSheet()为独立的子部件、整个窗口,甚至是整个应用程序指定一个样式表。
1、样式表的基础语法
Qt的样式表的语法几乎和CSS完全相同,都是由一系列的样式规则构成。例如:
//设置该页面所有的QCheckBox、QLabel、QPushButton的颜色为红色,背景色为白色
this->setStyleSheet("QCheckBox,QLabel,QPushButton{color:red;"
"background-color:write;"
"}");
2、前景及背景
前景:前景色指的是用来绘制控件上面的文本颜色,通过color属性设置
背景:背景色指的是用于绘制部件由background-origin指定的矩形区域(空白、边框、填充、内容)的填充颜色,通过background-color指定,另外控件的背景图片可以使用background-image设置。另外可以通过background-position设置图片的平铺方式,background-repeat设置是否重复。例如:
//默认情况下,背景图片是自动重复平铺以覆盖整个矩形区域
this->setStyleSheet("QPushButton{color:red;"
"margin:10px,14px,11px,12px;"
"background-color:green;" //设置背景颜色
"background-image:url(:/res/1.png);"//设置背景图片
"background-position:top right;" //设置图片向右对齐填充
"background-origin:concent;" //填充的是内容部分
"background-repeat:none;" //不重复
"}");
3、控制大小
min-width和min-height可以用来指定一个部件的内容区域的最小大小,也可以通过Qt的minimumSizeHint()设置。
4、伪状态处理
伪状态 | 描述 |
:checked | button部件被选中 |
:disabled | 部件被禁用 |
:enabled | 部件被启用 |
:focus | 部件获得焦点 |
:hover | 鼠标悬浮在部件上 |
:indeterminate | checkbox或radiobutton被部分选中 |
:off | 部件可以切换且处于off状态 |
:on | 部件可以切换且处于on状态 |
:pressed | 部件被鼠标点击 |
:unchecked | button部件没有被选中 |
5、使用子部件定义微观样式
许多部件都包含子部件,例如SpinBox的上下箭头,滑块等。子部件可以通过 ::来指定QDateEdit::up-button。另外子部件可以和伪状态结合使用。例如:QSpinBox::up-button:hover{};
子部件 | 描述 |
::up-button | QSpinBox、QDateEdit的向上按钮 |
::down-button | QSpinBox、QDateEdit的向下按钮 |
::up-arrow | QSpinBox、QDateEdit的向上箭头 |
::down-arrow | QSpinBox、QDateEdit的向下箭头 |
::drop-down | combo box的下拉箭头 |
::indicator | checkbox、radiobutton或可选groupbox的指示器 |
::item | menu、meunbar或statusbar的子项目 |
::menu-indicator | pushbutton的菜单指示器 |
::title | groupbox的标题 |
另外可以通过subcontrol-position和subcontrol-origin属性设置子部件放置的位置