若该文为原创文章,未经允许不得转载
原博主博客地址:https://blog.csdn.net/qq21497936
原博主博客导航:https://blog.csdn.net/qq21497936/article/details/102478062
本文章博客地址:http://blog.csdn.net/qq21497936/article/details/79424536
各位读者,知识无穷而人力有穷,要么改需求,要么找专业人士,要么自己研究
红胖子(红模仿)的博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中...(点击传送门)
《qss样式表笔记大全(一):qss名词解析(包含相关示例)》
《qss样式表笔记大全(二):可设置样式的窗口部件列表(上)(包含相关示例)》
《qss样式表笔记大全(三):可设置样式的窗口部件列表(中)(包含相关示例)》
《qss样式表笔记大全(四):可设置样式的窗口部件列表(下)(包含相关示例)》
Qt的qss样式全解与Demo
窗口部件 |
样式表使用方式 |
QSizeGrip |
支持width、height和image属性。 |
QSizeGrip {
image: url(E:/1.jpg);
width: 16px;
height: 16px;
}
窗口部件 |
样式表使用方式 |
QSlider |
支持盒模式。 若是水平滑条,min-width和hieght属性必须被提供。 若是垂直滑条,min-height和width属性必须被提供。
|
QSlider::groove:horizontal {
border: 1px solid rgb(255,0,0);
/* the groove expands to the size of the slider by default.*/
/* by giving it a height, it has a fixed size */
height: 8px;
background: qlineargradient(x1:0, y1:0, x2:0, y2:1,
stop:0 #B1B1B1,
stop:1 #c4c4c4);
margin: 2px 0;
}
QSlider::handle:horizontal {
background: qlineargradient(x1:0, y1:0, x2:1, y2:1,
stop:0 #b4b4b4,
stop:1 #8f8f8f);
border: 1px solid rgb(0,255,0);
width: 18px;
/* handle is placed by default on the contents rect of the groove.*/
/* Expand outside the groove */
margin: -2px 0;
border-radius: 3px;
}
QSlider::groove:vertical {
background: red;
/* absolutely position 4px from the left and right of the widget. */
/* setting margins on the widget should work too... */
position: absolute;
left: 4px; right: 4px;
}
QSlider::handle:vertical {
height: 10px;
background: green;
margin: 0 -4px; /* expand outside the groove */
}
QSlider::sub-page:vertical {
background: pink;
QSlider::add-page:vertical {
background: white;
}
窗口部件 |
样式表使用方式 |
QSpinBox
|
外框frame支持盒模式控制。 向上按钮和向上箭头可以分别使用::up-button和::up-arrow定制,默认情况下,向上按钮在padding rectangel右上角,如果向上按钮没有明确大小,它缺省占据参考矩形的一半高度。向上箭头在向上按钮content rectangle的正中间。 向下按钮和向下箭头可以分别使用::down-button和::down-arrow定制,默认情况下,向下按钮在padding rectangel右下角,如果向下按钮没有明确大小,它缺省占据参考矩形的一半高度。向下箭头在向下按钮content rectangle的正中间。 |
QSpinBox {
padding-right: 15px; /* make room for the arrows */
background: yellow;
}
QSpinBox::up-button {
subcontrol-origin: border;
subcontrol-position: top right; /* position at the top right corner */
width: 16px; /* 16 + 2*1px border-width = 15px padding + 3px parent border */
background: rgb(100, 0, 0);
}
QSpinBox::up-button:hover {
background: rgb(170, 0, 0);
}
QSpinBox::up-button:pressed {
background: rgb(255, 0, 0);
}
QSpinBox::up-arrow {
background: rgb(255,255,255);
width: 10px;
height: 10px;
}
QSpinBox::up-arrow:disabled, QSpinBox::up-arrow:off { /* off state when value is max */
background: rgb(0,0,0);
width: 10px;
height: 10px;
}
QSpinBox::down-button {
subcontrol-origin: border;
subcontrol-position: bottom right; /* position at bottom right corner */
width: 16px;
background: rgb(0, 100, 0);
}
QSpinBox::down-button:hover {
background: rgb(0, 170, 0);
}
QSpinBox::down-button:pressed {
background: rgb(0, 255, 0);
}
QSpinBox::down-arrow {
background: rgb(255,255,255);
width: 10px;
height: 10px;
}
/* off state when value in min */
QSpinBox::down-arrow:disabled,QSpinBox::down-arrow:off {
background: rgb(0,0,0);
width: 10px;
height: 10px;
}
窗口部件 |
样式表使用方式 |
QSplitter |
支持盒模式。 拥有子控件-移动句柄,使用::handle定制。 |
步骤一:拖选控件:
步骤二:选中需要使用QSpitter的多个控件
步骤三:点击分隔符,即可
QSplitter::handle {
background: rgb(255,0,0);
}
QSplitter::handle:horizontal {
width: 2px;
}
QSplitter::handle:vertical {
height: 2px;
}
QSplitter::handle:pressed {
background: rgb(0,255,0);
}
窗口部件 |
样式表使用方式 |
QStatusBar |
仅支持background属性。 每个item的frame也被定制,使用::item子控件控制。 |
QStatusBar {
background: brown;
}
QStatusBar::item {
border: 1px solid red;
border-radius: 3px;
}
QStatusBar {
background: brown;
}
QStatusBar::item {
border: 1px solid red;
border-radius: 3px;
}
QStatusBar QLabel {
border: 3px solid white;
}
窗口部件 |
样式表使用方式 |
QTabBar |
tabs可以分别通过::tab定制。 tabs支持:only-one,:first,:last,:middile,:previous-selected,:selected。 关闭按钮使用::close-button定制。 通过使用负边距或使用绝对位置方案创建所选状态的重叠tabs。 指示器使用::tear控制。 QTabBar使用2个QToolButtons滚动,可以通过QTabBar QtoolButton选择器进行定制。 定制滚动按钮的宽度使可使用::scroller控制。 tabs的排序可通过alignment属性控制。 警告:改变QTabWidget里面的QTabBar的位置,需要使用::tab-bar控制。 |
QTabWidget::pane { /* The tab widget frame */
border-top: 2px solid #C2C7CB;
}
QTabWidget::tab-bar {
left: 5px; /* move to the right by 5px */
}
/* Style the tab using the tab sub-control. Note that it reads QTabBar _not_ QTabWidget */
QTabBar::tab {
background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
stop: 0 #E1E1E1, stop: 0.4 #DDDDDD,
stop: 0.5 #D8D8D8, stop: 1.0 #D3D3D3);
border: 2px solid #C4C4C3;
border-bottom-color: #C2C7CB; /* same as the pane color */
border-top-left-radius: 4px;
border-top-right-radius: 4px;
min-width: 8ex;
padding: 2px;
}
QTabBar::tab:selected, QTabBar::tab:hover {
background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
stop: 0 #fafafa, stop: 0.4 #f4f4f4,
stop: 0.5 #e7e7e7, stop: 1.0 #fafafa);
}
QTabBar::tab:selected {
border-color: #9B9B9B;
border-bottom-color: #C2C7CB; /* same as pane color */
}
QTabBar::tab:!selected {
margin-top: 2px; /* make non-selected tabs look smaller */
}
QTabWidget::pane { /* The tab widget frame */
border-top: 2px solid #C2C7CB;
}
QTabWidget::tab-bar {
left: 5px; /* move to the right by 5px */
}
/* Style the tab using the tab sub-control. Note that it reads QTabBar _not_ QTabWidget */
QTabBar::tab {
background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
stop: 0 #E1E1E1,
stop: 0.4 #DDDDDD,
stop: 0.5 #D8D8D8,
stop: 1.0 #D3D3D3);
border: 2px solid #C4C4C3;
border-bottom-color: #C2C7CB; /* same as the pane color */
border-top-left-radius: 4px;
border-top-right-radius: 4px;
min-width: 8ex;
padding: 2px;
}
QTabBar::tab:selected, QTabBar::tab:hover {
background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
stop: 0 #fafafa,
stop: 0.4 #f4f4f4,
stop: 0.5 #e7e7e7,
stop: 1.0 #fafafa);
}
QTabBar::tab:selected {
border-color: #9B9B9B;
border-bottom-color: #C2C7CB; /* same as pane color */
}
QTabBar::tab:!selected {
margin-top: 2px; /* make non-selected tabs look smaller */
}
/* make use of negative margins for overlapping tabs */
QTabBar::tab:selected {
/* expand/overlap to the left and right by 4px */
margin-left: -4px;
margin-right: -4px;
}
QTabBar::tab:first:selected {
margin-left: 0; /* the first selected tab has nothing to overlap with on the left */
}
QTabBar::tab:last:selected {
margin-right: 0; /* the last selected tab has nothing to overlap with on the right */
}
QTabBar::tab:only-one {
margin: 0; /* if there is only one tab, we don't want overlapping margins */
}
QTabWidget::pane { /* The tab widget frame */
border-top: 2px solid #C2C7CB;
position: absolute;
top: -0.5em;
}
QTabWidget::tab-bar {
alignment: center;
}
/* Style the tab using the tab sub-control. Note that it reads QTabBar _not_ QTabWidget */
QTabBar::tab {
background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
stop: 0 #E1E1E1, stop: 0.4 #DDDDDD,
stop: 0.5 #D8D8D8, stop: 1.0 #D3D3D3);
border: 2px solid #C4C4C3;
border-bottom-color: #C2C7CB; /* same as the pane color */
border-top-left-radius: 4px;
border-top-right-radius: 4px;
min-width: 8ex;
padding: 2px;
}
QTabBar::tab:selected, QTabBar::tab:hover {
background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
stop: 0 #fafafa, stop: 0.4 #f4f4f4,
stop: 0.5 #e7e7e7, stop: 1.0 #fafafa);
}
QTabBar::tab:selected {
border-color: #9B9B9B;
border-bottom-color: #C2C7CB; /* same as pane color */
}
QTabBar::tear {
image: url(tear_indicator.png);
}
QTabBar::scroller { /* the width of the scroll buttons */
width: 20px;
}
QTabBar QToolButton { /* the scroll buttons are tool buttons */
background: rgb(255,0,0);
}
QTabBar QToolButton::right-arrow { /* the arrow mark in the tool buttons */
background: rgb(0,255,0);
}
QTabBar QToolButton::left-arrow {
background: rgb(0,0,255);
}
/* since 4.6 */
QTabBar::close-button {
background: rgb(0,0,0);
subcontrol-position: left;
}
QTabBar::close-button:hover {
background: rgb(255,255,255);
}
窗口部件 |
样式表使用方式 |
QTabWidget |
外框frame由::pane控制。 左右角分别由::left-corner和::right-coner控制。 tabBar的位置由::tab-bar控制。 默认子控件都是QWindowsStyle时QTabWidget的位置。 定制QTabBar请使用tab-bar控制。 依据tabs的方向,拥有四个状态:top,:left,:right,:bottom。 查看示例:QTabWidget和QTabBar定制 |
窗口部件 |
样式表使用方式 |
QTableView |
支持盒模式。 当alternating row colors属性设置为允许时,交替颜色可通过属性alternate-background-color控制。 被选中的内容部分的前景色和背景需要通过属性selection-color和selection-background-color控制。 在QTableView控件可作为一个QAbstractButton实现,还可以使用 “QTableView QTableCornerButton::section“选择器选择后控制样式。 表格颜色使用属性gridline-color。 背景可滚动,可参照QAbstractScrollArea窗口部件。 |
QTableView {
selection-background-color: qlineargradient(x1: 0, y1: 0, x2: 0.5, y2: 0.5,
stop: 0 #FF92BB, stop: 1 white);
}
QTableView QTableCornerButton::section {
background: red;
border: 2px outset red;
}
QTableView::indicator:unchecked {
background-color: #d7d6d5
}
窗口部件 |
样式表使用方式 |
QTableWidget |
查看QTableView |
窗口部件 |
样式表使用方式 |
QTextEdit |
支持盒模式。 被选中的内容部分的前景色和背景需要通过属性selection-color和selection-background-color控制。 |
窗口部件 |
样式表使用方式 |
QTimeEdit |
查看QSpinBox |
窗口部件 |
样式表使用方式 |
QToolBar |
支持盒模式。 拥有:top,:left,: right,:bottom状态,依赖tool-bar所在区域。 拥有:first,:last,:middle,:only-one状态指示器。 通过::separator控制分隔符。 |
QToolButton { /* all types of tool button */
border: 2px solid #8f8f91;
border-radius: 6px;
background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
stop: 0 #f6f7fa,
stop: 1 #dadbde);
}
QToolButton[popupMode="1"] { /* only for MenuButtonPopup */
padding-right: 20px; /* make way for the popup button */
}
QToolButton:pressed {
background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
stop: 0 #dadbde,
stop: 1 #f6f7fa);
}
/* the subcontrols below are used only in the MenuButtonPopup mode */
QToolButton::menu-button {
border: 2px solid gray;
border-top-right-radius: 6px;
border-bottom-right-radius: 6px;
/* 16px width + 4px for border = 20px allocated above */
width: 16px;
}
QToolButton::menu-arrow {
image: url(E:/1.jpg);
}
QToolButton::menu-arrow:open {
top: 1px; left: 1px; /* shift it a bit */
}
窗口部件 |
样式表使用方式 |
支持盒模式。 如果QToolButton拥有菜单,则可使用::menu-indicator来控制菜单指示器。默认的,菜单指示器是定位在padding rectangle的右下角。 如果QtoolButton是QToolButton::MenuButtonPopop模式,则可使用::menu-button来绘制menu button。 ::menu-arraow可用户绘制menu-button内的菜单箭头。默认的,它位置在menu-button子控件的centent rectangle中心。 当QToolButton显示箭头时,有且由::up-arrow,::down-arrow,::left-arrow,::right-arrow子控件控制。 警告:如果仅仅设置一个QToolButton的背景色,除非你设置border属性为某值,否则背景色不会生效。这是因为,默认的时候QToolButton绘制一个正框正好完全覆盖背景色。 |
第一种:不存在菜单,则可以直接参照QPushButton来定制QToolButton。
第二种:如果有菜单,菜单模式设置为QToolButton::DelayedPopup或者QToolButton::instantPopup(让我们统一归为非按钮弹出菜单吧)。这种情况,可直接参照带menu的QPushButton,主要是参照menu-indicator。
第三种:当菜单模式QToolButton::popupMode设置为
QToolButton::MenuButtonPopup时,参照以下示例:
QToolButton { /* all types of tool button */
border: 2px solid #8f8f91;
border-radius: 6px;
background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
stop: 0 #f6f7fa, stop: 1 #dadbde);
}
QToolButton[popupMode="1"] { /* only for MenuButtonPopup */
padding-right: 20px; /* make way for the popup button */
}
QToolButton:pressed {
background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
stop: 0 #dadbde, stop: 1 #f6f7fa);
}
/* the subcontrols below are used only in the MenuButtonPopup mode */
QToolButton::menu-button {
border: 2px solid gray;
border-top-right-radius: 6px;
border-bottom-right-radius: 6px;
/* 16px width + 4px for border = 20px allocated above */
width: 16px;
}
QToolButton::menu-arrow {
image: url(downarrow.png);
}
QToolButton::menu-arrow:open {
top: 1px; left: 1px; /* shift it a bit */
}
窗口部件 |
样式表使用方式 |
QToolBox |
支持盒模式。 每个不同的tab页面使用::tab进行控制。 tabs支持:only-one,:first,:last,:middle,:previous-selected,:next-selected,:selected状态。 |
QToolBox::tab {
background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
stop: 0 #E1E1E1, stop: 0.4 #DDDDDD,
stop: 0.5 #D8D8D8, stop: 1.0 #D3D3D3);
border-radius: 5px;
color: darkgray;
}
QToolBox::tab:selected { /* italicize selected tabs */
font: italic;
color: white;
}
窗口部件 |
样式表使用方式 |
QToolTip |
支持盒模式。 opacity属性控制tooltip的不透明度,1.0为完全不透明,0.0为透明。 属性:opacity* 属性类型:Number |
QFrame, QLabel, QToolTip{
border: 2px solid green; /* border: 宽度 线类型 颜色 */
border-radius: 4px;
padding: 2px; /* 边界都内部矩形的宽度 */
background-image: url(E:/1.jpg);
}
窗口部件 |
样式表使用方式 |
QTreeView |
支持盒模式。 当alternating row colors属性设置为允许时,交替颜色可通过属性alternate-background-color控制。 被选中的内容部分的前景色和背景需要通过属性selection-color和selection-background-color控制。 选择的行为可以在这里通过属性show-decoration-selected属性控制。 树分支科室使用::branch控制,拥有:open,:closed,:has-sibling,:has-children状态。 使用::item精确控制内容项。 背景可滚动,可参照QAbstractScrollArea窗口部件。 |
允许交替颜色时候可控制交替颜色
QTreeView {
alternate-background-color: yellow;
}
精确控制项
show-decoration-selected: 1;
}
QTreeView::item {
border: 1px solid #d9d9d9;
border-top-color: transparent;
border-bottom-color: transparent;
}
QTreeView::item:hover {
background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #e7effd, stop: 1 #cbdaf1);
border: 1px solid #bfcde4;
}
QTreeView::item:selected {
border: 1px solid #567dbc;
}
QTreeView::item:selected:active{
background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #6ea1f1, stop: 1 #567dbc);
}
QTreeView::item:selected:!active {
background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #6b9be8, stop: 1 #577fbf);
}
控制分支效果
QTreeView {
show-decoration-selected: 1;
}
QTreeView::item {
border: 1px solid #d9d9d9;
border-top-color: transparent;
border-bottom-color: transparent;
}
QTreeView::item:hover {
background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #e7effd, stop: 1 #cbdaf1);
border: 1px solid #bfcde4;
}
QTreeView::item:selected {
border: 1px solid #567dbc;
}
QTreeView::item:selected:active{
background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #6ea1f1, stop: 1 #567dbc);
}
QTreeView::item:selected:!active {
background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #6b9be8, stop: 1 #577fbf);
}
QTreeView::branch:has-siblings:!adjoins-item {
border-image: url(vline.png) 0;
}
QTreeView::branch:has-siblings:adjoins-item {
border-image: url(branch-more.png) 0;
}
QTreeView::branch:!has-children:!has-siblings:adjoins-item {
border-image: url(branch-end.png) 0;
}
QTreeView::branch:has-children:!has-siblings:closed,
QTreeView::branch:closed:has-children:has-siblings {
border-image: none;
image: url(branch-closed.png);
}
QTreeView::branch:open:has-children:!has-siblings,
QTreeView::branch:open:has-children:has-siblings {
border-image: none;
image: url(branch-open.png);
}
/* 未打开节点时的图标 */
QTreeWidget::branch:has-children:!has-siblings:closed,
QTreeWidget::branch:closed:has-children:has-siblings {
border-image: url(:/treeWidget/images/branch-closed.png);
}
/* 打开节点时的图标 */
QTreeWidget::branch:open:has-children:!has-siblings,
QTreeWidget::branch:open:has-children:has-siblings {
border-image: url(:/treeWidget/images/branch-open.png);
}
/* 节点与兄弟节点之间的图标(在上的节点展开后) */
QTreeWidget::branch:has-siblings:!adjoins-item {
border-image: url(:/treeWidget/images/vLine.png);
}
/*子项前面(非结束项)*/
QTreeWidget::branch:has-siblings:adjoins-item {
border-image: url(:/treeWidget/images/branch-more.png);
}
/*结束项*/
QTreeWidget::branch:!has-children:!has-siblings:adjoins-item {
border-image: url(:/treeWidget/images/branch-end.png)
}
窗口部件 |
样式表使用方式 |
QTreeWidget |
查看QTreeView |
窗口部件 |
样式表使用方式 |
QWidget |
仅支持background,background-clip和background-origin属性。注意:这是直接设置QWidget背景图片等失败的原因,解决方法如下重写paintEvent)。 如果其子类,需要支持其他除以上三种的其他属性,需要重写paintEvent代码。 以上的代码生效stylesheet,对其他操作没有影响。 警告:必须添加Q_OBJECT宏。 |
《qss样式表笔记大全(一):qss名词解析(包含相关示例)》
《qss样式表笔记大全(二):可设置样式的窗口部件列表(上)(包含相关示例)》
《qss样式表笔记大全(三):可设置样式的窗口部件列表(中)(包含相关示例)》
《qss样式表笔记大全(四):可设置样式的窗口部件列表(下)(包含相关示例)》
原博主博客地址:https://blog.csdn.net/qq21497936
原博主博客导航:https://blog.csdn.net/qq21497936/article/details/102478062
本文章博客地址:http://blog.csdn.net/qq21497936/article/details/79424536