Qt- QSS样式表用法及用例说明

这里写自定义目录标题

  • QSS样式表用法
    • 1.Qt样式表语法
    • 2.选择器
    • 3.属性列表
    • 4.冲突解决
    • 5.全局添加QSS

QSS样式表用法

整理qss样式表语法知识,方便今后查看。

1.Qt样式表语法

Qt样式表支持各种属性、伪状态和子控件,可以自定义小部件的外观

selector { attribute: value }
selector:选择器,如 QWidget、QPushButton、QGroupBox等
attribute:属性,如color、background-color、border、padding等
value:值,与属性对应

2.选择器

  1. 可设置样式的部件
Widget如何设置
QWidget只支持background, background-clip和background-origin属性。如果你继承于QWidget,那么你需要为你自定义的QWidget提供一个paintEvent,如下所示:在这里插入图片描述注意:请确保自定义小部件定义了Q_OBJECT宏。
QAbstractScrollArea支持box model在这里插入图片描述margin、border-width和padding属性都默认为0。在这种情况下,所有四个矩形(边距、边框、填充和内容)都完全重合。
QCheckBox支持盒子模型。检查指示器可以使用::indicator子控件样式化。默认情况下,指示器被放置在左边。spacing属性指定检查指示器和文本之间的间距。
QComboBoxQCombobox周围的框架可以使用box model设置样式。下拉按钮可以使用::drop-down子控件设置样式。默认情况下,下拉按钮放置在小部件的内边距矩形的右边。下拉按钮内的箭头标记可以使用::down-arrow子控件设置样式。默认情况下,箭头放置在下拉子控件的内容矩形的中心。
QDockWidget停靠时支持标题栏和标题栏按钮的样式化。可以使用border属性对dock小部件边框进行样式化。::title子控件可用于自定义标题栏。关闭和浮动按钮分别使用::close按钮和::float按钮相对于::title子控件进行定位。当标题栏垂直时,设置:vertical伪类。另外,根据QDockWidget::DockWidgetFeature,设置了:closable,:floatable和:movable伪状态
QFrame支持box model。从4.3开始,在QLabel上设置样式表会自动将QFrame:: framstyle属性设置为QFrame::StyledPanel
QGroupBox支持box model。标题可以使用::title子控件设置样式。默认情况下,标题的放置取决于QGroupBox::textAlignment。在可选QGroupBox的情况下,标题包括检查指示器。指示器使用::indicator子控件设置样式。spacing属性可以用来控制文本和指示符之间的间距
QHeaderView支持box model。头视图的部分使用::section子控件进行样式化。子控件部分支持:middle、:first、:last、:only-one、:next-selected、:previous-selected、:selected和:checked伪状态。排序指示器可以使用::up-arrow和 ::down-arrow 子控件进行样式化。
QLabel支持box model。不支持:hover伪状态。从4.3开始,在QLabel上设置样式表会自动将QFrame:: framstyle属性设置为QFrame::StyledPanel
QLineEdit支持box model。选中项的颜色和背景分别使用selection-color和selection-background-color设置样式。可以使用lineedit-password-character属性设置密码字符的样式。可以使用lineedit-password-mask-delay更改密码掩码延迟
QMainWindow支持分隔符的样式化。使用QDockWidget时,QMainWindow中的分隔符使用::separator子控件进行样式化
QMenu单个项目使用::item子控件设置样式。除了通常支持的伪状态外,item子控件还支持:selected、:default、:exclusive和 :non-exclusive伪状态。可选菜单项的指示符使用::indicator子控件设置样式。分隔符使用::separator子控件设置样式。对于子菜单项,箭头标记使用::right-arrow 和::left-arrow设置样式。使用::scroller对滚动条进行样式化。撕裂式使用::tearoff。
QMenuBarspacing属性指定菜单项之间的间距。使用::item子控件对单个项进行样式化。
QMessageBoxmessage - box-text-interaction-flags属性可用于更改与消息框中的文本的交互。
QProgressBar进度条的块可以使用::chunk子控件设置样式。该块显示在小部件的内容矩形上。如果进度条显示文本,请使用text-align属性来定位文本。不确定进度条有:Indeterminate伪状态设置。
QPushButton支持:default、:flat、:checked伪状态。从5.15开始,icon属性可以被设置为覆盖按钮图标。对于带有菜单的QPushButton,菜单指示器使用::menu-indicator子控件样式化。可检查按钮的外观可以使用:open和:closed伪状态定制。警告:如果你只在一个QPushButton上设置了背景色,背景可能不会出现,除非你设置了border属性为某个值。这是因为,在默认情况下,QPushButton绘制了一个与背景色完全重叠的本机边框
QRadioButton检查指示器可以使用::indicator子控件样式化。默认情况下,指示器被放置在小部件Contents矩形的左上角。spacing属性指定检查指示器和文本之间的间距。
QScrollBar窗口组件的内容矩形被认为是滑块移动的槽。QScrollBar的范围(即宽度或高度,取决于方向)分别使用width或height属性设置。要确定方向,可以使用:horizontal和:vertical伪状态。可以使用::handle子控件设置滑块的样式。设置min-width或min-height可以根据方向为滑块提供尺寸约束。::add-line子控件可用于设置按钮的样式以添加行。默认情况下,add-line子控件放置在小部件边框矩形的右上角,取决于::right-arrow 或 ::down-arrow. 。默认情况下,箭头放置在添加行子控件的Contents矩形的中心。:: subline子控件可用于设置按钮的样式以减去一行。默认情况下,subline子控件放置在小部件边框矩形的右下角,取决于::left-arrow 或 ::up-arrow。默认情况下,箭头放置在子行子控件的Contents矩形的中心。:: subpage子控件可用于设置滑块减去页面的区域的样式。::add-page子控件可用于设置添加页面的滑块区域的样式。
QSlider对于水平滑动,必须提供 min-width和 height属性。对于垂直滑块,必须提供min-height和width属性。滑块的凹槽采用::groove样式。默认情况下,凹槽位于小部件的内容矩形中。滑块的头部使用::handle子控件设置样式。子控件在槽子控件的内容矩形中移动
QSpinBox向上按钮和箭头可以使用::up-button和::up-arrow子控件设置样式。默认情况下,向上按钮放置在小部件的内边距矩形的右上角。如果没有明确的尺寸,它将占据其参考矩形高度的一半。向上箭头放置在向上按钮的内容矩形的中心。可以使用::down-button和::down-arrow子控件为down按钮和箭头设置样式。默认情况下,down按钮放置在小部件的内边距矩形的右下角。如果没有明确的尺寸,它将占据其参考矩形高度的一半。底部箭头放置在底部按钮的内容矩形的中心。
QSplitter分割器的句柄使用::handle子控件进行样式化
QStatusBar只支持background属性。可以使用::item子控件对单个项的框架进行样式化。
QTabBar单个选项卡可以使用::tab子控件设置样式。选项卡支持:only-one、:first、:last、:middle、:previous–selected、:next-selected、:selected等伪状态。:top、:left、:right、:bottom伪状态取决于选项卡的方向。选择状态的重叠制表符可以使用负边距或绝对位置模式创建。QTabBar的撕裂指示器使用::tear子控件进行样式设置。QTabBar为它的滚动条使用了两个QToolButton,可以使用QTabBar QToolButton选择器设置样式。要指定滚动按钮的宽度,可以使用::scroller子控件。QTabBar中选项卡的对齐方式使用alignment属性设置样式。要更改QTabBar在QTabWidget中的位置,请使用tab-bar子控件(并设置subcontrol-position)。
QTabWidget选项卡部件的框架使用::pane子控件设置样式。左角和右角分别使用::left-corner和::right-corner设置样式。tab bar的位置由::tab-bar子控件控制。默认情况下,子控件具有QTabWidget在QWindowsStyle中的位置。要将QTabBar放在中间,请设置tab-bar子控件的subcontrol-position。:top、:left、:right、:bottom伪状态取决于选项卡的方向。
QTableView启用交替行颜色后,可以使用属性alternative-background-color设置交替行颜色的样式。选中项的颜色和背景分别使用selection-color和selection-background-color设置样式。QTableView中的拐角部件是作为QAbstractButton实现的,可以使用“QTableView QTableCornerButton::section”选择器设置样式。警告:如果你只在QTableCornerButton上设置了背景色,背景可能不会出现,除非你设置border属性为某个值。这是因为,在默认情况下,QTableCornerButton绘制了一个完全重叠背景色的本机边框。网格的颜色可以使用gridline-color属性指定。
QTextEdit所选文本的颜色和背景分别使用selection-color和selection-background-color进行样式化。
QToolButton如果QToolButton有菜单,则可以使用::menu-indicator子控件来设置指示器的样式。默认情况下,菜单指示符位于widget的内边距矩形的右下角。如果QToolButton处于QToolButton::MenuButtonPopup模式,则使用::menu-button子控件来绘制菜单按钮。::menu-arrow子控件用于在菜单按钮内绘制菜单箭头。默认情况下,它位于menu-button子控件内容矩形的中心。当QToolButton显示箭头时,将使用::up-arrow、::down-arrow、::left-arrow和::right-arrow子控件。警告:如果你只在QToolButton上设置了背景色,背景将不会出现,除非你设置border属性为某个值。这是因为,在默认情况下,QToolButton绘制了一个与背景颜色完全重叠的本机边框
QToolTipopacity属性控制工具提示的不透明度。
QTreeView当设置交替行颜色 enabled后,可以使用属性alternative -background-color设置交替行颜色的样式。选中项的颜色和背景分别使用selection-color和selection-background-color设置样式。选择行为由show-decoration-selected属性控制。树视图的分支可以使用::branch子控件设置样式。::branch子控制支持:open、:closed、:has-sibling和:has-children伪状态。使用::item子控件对QTreeView中的项进行更细粒度的控制。
  1. 选择器类型
选择器示例说明
通用选择器*匹配所有部件
类型选择器QPushButton匹配所有QPushButton示例及它的所有子类
属性选择器QPushButton[flat = “false”]匹配QPushButton的属性flat为false的示例
类选择器.QPushButton匹配所有QPushButton示例,但不包括它的子类
ID选择器QPushButton#myButton匹配所有QPushButton中myButton对象的实例
后代选择器QDialog QPushButton匹配所有QPushButton实例,它们必须是QDialog的子孙部件
孩子选择器QDialog>QPushButton匹配所有QPushButton实例,它们必须是QDialog直系孩子部件
  1. 子控件
    子控件是双冒号"::"
    对于一些复杂的部件修改样式,可能需要访问它们的子部件,如QComboBox的下拉按钮,QSpinBox的向上、向下箭头灯。
    如:下拉按钮设置图片属性:QComboBox::drop-down{image:url(dropdown.png)}
子控件说明
::add-line在QScrollBar中跳转下一行的按钮
::add-page在QScrollBar中滑动条和add-line之间的区域
::branch在QTreeView中的分支指示器
::chunk在QProgressBar中的进度块
::close-button在QDockWidget或QTabBar选项卡的关闭按钮
::corner在QAbstractScrollArea中两个滚动条之间的角落
::down-arrow在QComboBox、QHeaderView(排序指示器)、QScrollBar或QSpinBox的向下箭头
::down-button在QScrollBar或QSpinBox中的向下按钮
::drop-down在QComboBox中的下拉框
::float-button在QDockWidget中的浮动按钮
::groove在QSlider中的滑动槽
::indicator在QAbstractItemVIew、QCheckBox、QRadioButton、可选中的菜单项或可选中的QGroupBox中的指示器
::handle在QScrollBar、QSplitter和QSlider中的操作条(滑动条)
::icon在QAbstractItemVIew或QMenu中的图标
::item在QAbstractItemVIew、QMenuBar、QMenu或QStatuBar中的一项
::left-arrow在QScrollBar中的向左箭头
::left-corner在QTabWidget中的左上角
::menu-arrow带有菜单的QToolButton中的箭头
::menu-button在QToolButton中的菜单按钮
::menu-indicator在QPushButton中的菜单指示器
::right-arrow在QMenu或QScrollBar中的向右箭头
::pane在QTabWidget中的边或框
::right-corner在QTabWidget中的右上角
::scroller在QMenu或QTabBar中的滚动条
::section在QHeaderView中的区块
::separator在QMenu或QMainWIndow中分隔条
::sub-line在QScrollBar中跳转上一行的按钮
::sub-page在QScrollBar中滑动条和sub-line之间的区域
::tab在QTabBar或QToolBox中选项卡
::tab-bar在QTabWidget中的选项卡栏
::tear在QTabBar中的tear指示器
::tearoff在QMenu中的tear-off指示器
::text在QAbstractItemView中的文本
::title在QGroupBox或QDockWidget中的标题栏
::up-arrow在QComboBox、QHeaderView(排序指示器)、QScrollBar或QSpinBox的向上箭头
::up-button在QScrollBar或QSpinBox中的向上按钮
  1. 伪状态

伪状态使用单冒号":"
a.选择器可以使用状态来限制在部件的指定状态上的应用。伪状态在选择器之后,用冒号隔离。如:
鼠标悬停在按钮上时其按钮的颜色为白色:QPushButton:hover{color:white}
鼠标不悬停在按钮上时其按钮的颜色为l蓝色(!表否定):QPushButton:!hover{color:blue}
b.伪状态可多个连用,达到逻辑与效果。如:
鼠标悬停在一个被选中的QCheckBox部件上时才应用规则:QCheckBox:hover:checked{color:white}
c.伪状态可通过逗号达到逻辑或效果。如:QCheckBox:hover,checked{color:white}
d.伪状态和子部件联合使用。如:QComboBox::drop-down:hover{image:url(dropdown_bright.png)}

伪状态描述
:active此状态在小部件驻留在活动窗口时设置
:adjoins-item此状态在QTreeView的::branch与一个item相邻时设置
:alternate当QAbstractItemView::alternatingRowColors()设置为真时,在绘制QAbstractItemView的行时,为每个交替行设置此状态
:bottom此item位于底部。例如,QTabBar有位于底部的选项卡
:checked此item被选中。例如,QAbstractButton的checked状态
:closable此item可以被关闭。例如,QDockWidget的QDockWidget::DockWidgetClosable特性开启时
:closed此item处于关闭状态。例如,QTreeView中未展开的item
:default此item的默认状态。例如,一个default的QPushButton或QMenu中的一个默认动作
:disabled此item被禁用时的状态
:editable如QComboBox是可编辑的
:edit-focus此item具有编辑焦点(参考QStyle::State_HasEditFocus)。此状态仅对Qt扩展应用程序可用
:enabled此item已启用
:exclusive此item是一个独占项组的一部分。例如,独占QActionGroup中的菜单项
:first此item是列表中的第一项。例如,QTabBar中的第一个选项卡
:flat此item是平的。例如,一个扁平的QPushButton
:floatable此item可以浮动。例如,QDockWidget的QDockWidget::DockWidgetFloatable的特性开启时
:focus此item具有输入焦点
:has-children此item具有子对象。例如,QTreeView中具有子项的项
:has-sibling此item具有兄弟对象。例如,QTreeView中与之相邻的项
:horizontal此item处于水平方向
:hover鼠标悬浮在此item上
:indeterminate此item处于不确定状态。例如,QCheckBox或QRadioButton被部分选中
:last此item是列表中的最后一项。例如,QTabBar中的最后一个选项卡
:left此item位于左侧。例如,QTabBar有位于左侧的选项卡
:maximized此item处于最大化状态。例如,一个最大化的QMdiSubWindow
:middle此item是列表中的中间一项。例如,一个不在QTabBar中的开头或结尾的选项卡
:minimized此item处于最小化状态。例如,一个最小化的QMdiSubWindow
:movable此item可以被移动。例如, QDockWidget的QDockWidget::DockWidgetMovable特性开启时
:no-frame此item没有边框。例如,没有边框的QSpinBox或QLineEdit
:non-exclusive此item是一个非独占项组的一部分。例如,非独占QActionGroup中的菜单项
:off对可以切换的items,这适用于处于off状态的item
:on对可以切换的items,这适用于处于on状态的widget
:only-one此item是列表中的唯一的一项。例如,一个在QTabBar中单独的选项卡
:open此item处于打开状态。例如,QTreeView中的展开项,或带有菜单的QComboBox或QPushButton
:next-selected此item是列表中的下一个被选中的项。例如,在QTabBar中当前选项卡的下一个要选中的选项卡
:pressed鼠标正在按压在此item上
:previous-selected此item是列表中的上一个被选中的项。例如,在QTabBar中当前选项卡的上一个要选中的选项卡
:read-only此item处于只读或不可编辑状态。例如,一个只读QLineEdit或不可编辑的QComboBox
:right此item位于右侧。例如,QTabBar有位于右侧的选项卡
:selected此item处于选中状态。例如,一个在QTabBar中被选中的选项卡或一个在菜单中被选中的菜单项
:top此item位于顶部。例如,QTabBar有位于顶部的选项卡
:unchecked此item处于未被选中状态
:vertical此item处于垂直方向
:window小部件是一个窗口(例如,一个顶层小部件)

3.属性列表

QSS官方参考
对于不理解的地方可以参考CSS:CSS参考手册(里面有测试,可以很直观的看到不同属性值的区别)

attribute属性类型描述
alternate-background-colorBrush交替背景色。
backgroundBackground背景,相当于指定background-color、background-image、background-repeat和background-position。
background-colorBrush背景颜色
background-imageUrl背景图像(图像的半透明部分会被背景颜色穿透)。
background-repeatRepeat背景图像如何充满背景矩形,如果未指定此属性,背景图像将在两个方向上重复(repeat)。
background-positionAlignment背景图像在背景原点矩形内的对齐。如果未指定此属性,则对齐方式为左上角。
background-attachmentAttachment背景图像是否相对于视口进行滚动或固定。默认情况下,背景图像随视口滚动。
background-clipOrigin规定背景的绘制区域。如果未指定此属性,则默认为border,border:背景被裁剪到边框盒,padding:背景被裁剪到内边距框,content:背景被裁剪到内容框
background-originOrigin背景图像相对于什么来定位。如果未指定此属性,则默认为 padding 填充。padding:背景图像相对于内边距框来定位border:背景图像相对于边框盒来定位,content:背景图像相对于内容框来定位
borderBorder设置 4 个边框的样式,按照一下顺序进行设置:border-width,border-style,border-color。
border-topBorder顶部边框
border-bottomBorder底部边框
border-rightBorder右边边框
border-leftBorder左边边框
border-colorBox Colors边框的颜色。
border-top-colorBrush边框上边缘颜色
border-bottom-colorBrush边框下边缘颜色
border-right-colorBrush边框右边缘颜色
border-left-colorBrush边框左边缘颜色
border-imageBorder Image填充边框的图像
border-radiusRadius边角的半径,即边角圆弧。
border-top-left-radiusRadius左上角圆弧
border-top-right-radiusRadius右上角圆弧
border-bottom-right-radiusRadius右下角圆弧
border-bottom-left-radiusRadius左下角圆弧
border-styleBorder Style边框边缘的样式,若未指定默认为none。
border-top-styleBorder Style边框上边缘的样式
border-bottom-styleBorder Style边框下边缘的样式
border-right-styleBorderStyle边框右边缘的样式
border-left-styleBorderStyle边框左边缘的样式
border-widthBox Lengths边框的宽度。
border-top-widthBox Lengths上边框的宽度
border-bottom-widthBox Lengths下边框的宽度
border-right-widthBox Lengths右边框的宽度
border-left-widthBox Lengths左边框的宽度bottom Length 在部件边底部其子控件向上的偏移量,即元素与底部边缘的距离。top Length 在部件边顶部其子控件向下的偏移量,即元素与顶部边缘的距离。right Length 在部件右边其子控件向左的偏移量,即元素与右边缘的距离。left Length 在部件左边其子控件向右的偏移量,即元素与左边缘的距离。
button-layoutNumberQDialogButtonBox或QMessageBox中的按钮布局。取值为0 (WinLayout)、1 (MacLayout)、2 (KdeLayout)、3 (GnomeLayout)和5 (AndroidLayout)。如果未指定此属性,它默认为SH_DialogButtonLayout样式提示的当前样式所指定的值。
colorBrush渲染文本的颜色,默认值为黑色。
dialogbuttonbox-buttons-have-iconsBooleanQDialogButtonBox中的按钮是否显示图标如果这个属性被设置为1,QDialogButtonBox的按钮显示图标;如果设置为0,则不显示图标。
fontFont 设置字体。相当于指定font-family、font-size、font-style和/或font-weight。
font-familyString字体类型。
font-sizeFont Size字体大小。
font-styleFont Style字体风格(倾斜)。
font-weightFont Weight字体的粗细。
gridline-color*ColorQTableView中网格线的颜色。如果没有指定此属性,它默认为SH_Table_GridLineColor样式提示的当前样式所指定的值。
heightLength子部件的高度。如果希望小部件具有固定的高度,请将min-height和max-height设置为相同的值。
widthLength子控件(在某些情况下是小部件)的宽度。
iconUrl+所使用的图标,用于具有图标的小部件。目前唯一支持此属性的小部件是QPushButton。
icon-sizeLength小部件中图标的宽度和高度。可以使用此属性设置以下小部件的图标大小:QCheckBox、QListView、QPushButton、QRadioButton、QTabBar、QToolBar、QToolBox、QTreeView。
image*Url+在子控件的内容矩形中绘制图像。image属性接受一个url列表或者一个svg。绘制的实际图像使用与QIcon相同的算法。图像从不放大,但在必要时总是缩小。如果指定了svg,则图像会被缩放为内容矩形的大小。警告:渲染SVG图像需要QIcon SVG插件。隐式设置down-button的大小为spindown.png的大小
image-positionAlignment图像位置的对齐方式
lineedit-password-character*NumberQLineEdit密码字符作为Unicode数字。如果没有指定此属性,它默认为SH_LineEdit_PasswordCharacter样式提示的当前样式所指定的值。
lineedit-password-mask-delay*Number在lineedit-password-character应用到可见字符之前,QLineEdit密码掩码延迟毫秒。如果未指定此属性,它默认为SH_LineEdit_PasswordMaskDelay样式提示的当前样式所指定的值。
marginBox Lengths设置元素的4个外边距。相当于指定margin-top、margin-right、margin-bottom和margin-left。
margin-topLength上边距
margin-rightLength右边距
margin-bottomLength下边距
margin-leftLength左边距
max-heightLength小部件或子控件(例如Item)的最大高度。
max-widthLength小部件或子控件(例如Item)的最大宽度。
min-heightLength小部件或子控件(例如Item)的最小高度。
min-widthLength小部件或子控件(例如Item)的最小宽度。
messagebox-text-interaction-flags*Number消息框中文本的交互行为。可能的值基于Qt::TextInteractionFlags。如果未指定此属性,则默认为SH_MessageBox_TextInteractionFlags样式提示的当前样式所指定的值。
opacity*Number小部件的不透明度。取值范围为0(透明)~ 255(不透明)。目前,这只支持tooltips。如果未指定此属性,它默认为SH_ToolTipLabel_Opacity样式提示的当前样式指定的值。
outline边框的轮廓
outline-colorColor轮廓的颜色 outline-offset Length 轮廓与小部件边界的偏移量
outline-style指定用于绘制轮廓的模式
outline-radius在轮廓中添加圆角
outline-bottom-left-radiusRadius轮廓左下角的圆角
outline-bottom-right-radiusRadius轮廓右下角的圆角
outline-top-right-radiusRadius轮廓右上角的圆角
outline-top-left-radiusRadius轮廓左上角的圆角
paddingBox Lengths小部件的填充。相当于指定填充顶部、填充右侧、填充底部和填充左侧。如果未指定此属性,则默认为0。
padding-topLength顶部填充
padding-rightLength右侧填充
padding-bottomLength底部填充
padding-leftLength左侧填充
paint-alternating-row-colors-for-empty-areaboolQTreeView是否为空区域(即没有项目的区域)绘制交替的行色
posotionrelativeabsolute
selection-background-color*Brush所选文本或项的背景。如果未设置此属性,则默认值是为调色板palette的Highlight角色设置的值。
selection-color*Brush所选文本或项的前景。如果未设置此属性,则默认值是为调色板palette的HighlightedText角色设置的值。
show-decoration-selected*Boolean控制QListView中的选择是覆盖整行还是仅覆盖文本的范围。如果未指定此属性,它默认为SH_ItemView_ShowDecorationSelected样式提示的当前样式指定的值。
spacing*Length小部件中的内部间距。
subcontrol-origin*Origin父元素中子控件的起始矩形。如果未指定此属性,则默认为填充。
subcontrol-position*Alignment子控件在subcontrol-origin指定的原点矩形内的对齐。如果未指定此属性,则默认为依赖于子控件的值。
titlebar-show-tooltips-on-buttonsbool工具提示是否显示在窗口标题栏按钮上。widget-animation-duration* Number 动画应该持续多长时间(以毫秒为单位)。值等于零意味着动画将被禁用。如果没有指定此属性,它默认为SH_Widget_Animation_Duration样式提示的当前样式指定的值。
text-alignAlignment小部件内容中的文本和图标的对齐方式。

4.冲突解决

几个样式规则对相同的属性指定不同的值时会产生冲突。如

QPushButton#okButton{color:gray}
QPushButton{color:red}

冲突原则:特殊的选择器优先。此例中QPushButton#okButton代表的是单一对象,而不是一个类的所有实例,所以okButton的文本颜色会是灰色的。同样的有伪状态的比没有伪状态的优先。

5.全局添加QSS

在Resource文件中添加qss文件,构造函数中直接调用

void MainWindow::loadStyleSheet(const QString &styleSheetFile){  //styleSheetFile是qss文件的Path
	QFile file(styleSheetFile);
	if(file.open(QFile::ReadOnly)){
		//如果在MainWindow使用了setStyleSheet,对qss文件的内容进行追加
		//QString styleSheet = this->styleSheet();
		//styleSheet += QLatin1String(file.readAll());//读取样式表文件
		QString styleSheet = QLatin1String(file.readAll());  //QByteArray可直接转换为QString
    	this->setStyleSheet(styleSheet);
    	file.close();
	}else{
		QMessageBox::information(this,"tip","Failed to open file");
	}
}

注意:对同一个对象调用多次setStyleSheet,先前的设置将无效,只有最后设置的才会生效。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/21830.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Day01 关系型数据MySQL简介与多平台安装配置

文章目录 第一章 数据库简介1.1 数据库的简介1.2 数据库的分类 第二章 数据库的安装与配置2.1 安装: Windows版2.2 卸载: Windows版2.3 安装: Mac直装版2.4 卸载: Mac直装版2.5 安装: Mac Homebrew版2.6 卸载: Mac Homebrew版2.7 启动、停止mysql服务2.8 登录到MySQL2.9 修改密…

【dcdc】AP2813 DCDC降压恒流芯片 两路输出 一路恒流 一路瀑闪 电动摩托汽车灯方案

1,方案来源:深圳市世微半导体有限公司 汤巧 2,产品描述 AP2813 是一款双路降压恒流驱动器,高效率、外围简单、内置功率管,适用于 5-80V 输入的高精度降压 LED 恒流驱动芯片。内置功率管输出最大功率可达12W,最大电流…

从零开始学习JVM(五)-运行时数据区的方法区

1. 方法区基本介绍 官方文档:The Java Virtual Machine Specification 《Java虚拟机规范》中明确说明:“尽管所有的方法区在逻辑上是属于堆的一部分,但一些简单的实现可能不会选择去进行垃圾收集或者进行压缩。”但对于HotSpotJVM而言&…

webpack将vue3单页面应用改造成多页面应用

上篇文章搞了个单页面vue,现在要将其改成多页面,只是简单尝试,给了例子 其实也就是改个webpack的入口和html模版的配置,其他的话,每个页面都有自己的vue和路由实例,pinia的话就共享吧 !import…

Java版本电子招标采购系统源代码—企业战略布局下的采购寻源

智慧寻源 多策略、多场景寻源,多种看板让寻源过程全程可监控,根据不同采购场景,采取不同寻源策略, 实现采购寻源线上化管控;同时支持公域和私域寻源。 询价比价 全程线上询比价,信息公开透明,可…

# 性能诊断 JProfiler 工具使用

性能诊断 JProfiler 工具使用 JProfiler是一个重量级的JVM监控工具,提供对JVM精确监控,其中堆遍历、CPU剖析、线程剖析看成定位当前系统瓶颈的得力工具。可以统计压测过程中JVM的监控数据,定位性能问题。 官网地址:Java Profiler…

shallowRef和shallowReactive的使用?

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、 shallowRef?二、 shallowReactive?在什么时候使用? 三、案例1、shallowRef2、shallowReactive 提示:以下是本篇…

App Store上线APP流程

现在App Store上已经有数百万款应用,因此对于App的规范要求也越来越高,对于新上线的APP需要满足这些规则并不是件容易的事。今天和大家分享这方面的知识,希望大家喜欢。北京木奇移动技术有限公司,专业的软件外包开发公司&#xff…

浙大数据结构第六周之初识图

题目详情:06-图1 列出连通集 给定一个有N个顶点和E条边的无向图,请用DFS和BFS分别列出其所有的连通集。假设顶点从0到N−1编号。进行搜索时,假设我们总是从编号最小的顶点出发,按编号递增的顺序访问邻接点。 输入格式: 输入第1…

飞书接入ChatGPT - 将ChatGPT集成到飞书机器人,直接拉满效率

文章目录 前言环境列表视频教程1.飞书设置2.克隆feishu-chatgpt项目3.配置config.yaml文件4.运行feishu-chatgpt项目5.安装cpolar内网穿透6.固定公网地址7.机器人权限配置8.创建版本9.创建测试企业10. 机器人测试 转载自远控源码文章:飞书接入ChatGPT - 将ChatGPT集…

服务(第二十八篇)rsync

配置rsync源服务器: #建立/etc/rsyncd.conf 配置文件 vim /etc/rsyncd.conf #添加以下配置项 uid root gid root use chroot yes #禁锢在源目录 address 192.168.80.10 …

庄懂的TA笔记(十四十六)<特效:火焰 + 水流>

庄懂的TA笔记(十四&十六)<特效:火焰 水流> 目录 一、作业展示: 二、示范:火: 参考资料: 实现思路: 实践操作: 三、示范:水: 实现思路&am…

PCB 布线技术~PCB结构:Traces,电源平面

PCB导体:Traces • 铜是PCB中最常用的导体 – 走线或连接器一般通过镀金来提供一个抗腐蚀的电传导特性 – 走线的宽度和长度-由PCB布线工程师控制 • 在通常的制造工艺下,走线的宽度和之间的间距一般要≥5 mil – 走线厚度-制造工艺的变量 • 典型值 0.5oz – 3oz •…

C++(2):变量和基本类型

基本内置类型 C定义了一套包括算术类型(arithmetic type)和空类型(void)在内的基本数据类型。其中算术类型包含了字符、整型数、布尔值和浮点数。空类型不对应具体的值。 算数类型 算数类型分为两类:整型&#xff0…

【Linux】多种环境变量介绍与设置

文章目录 一. linux环境变量介绍1. linux中的环境变量配置文件2. 环境变量加载顺序 二. 操作环境变量1. 读取环境变量envexportecho $PATH 2. 设置环境变量2.1. export PATH:临时的环境变量2.2. 用户的环境变量vim ~/.bashrcvim ~/.bash_profile 2.3. 所有用户的环境…

网络原理(四):传输层协议 TCP/UDP

目录 应用层 传输层 udp 协议 端口号 报文长度(udp 长度) 校验和 TCP 协议 确认应答 超时重传 链接管理 滑动窗口 流量控制 拥塞控制 延时应答 捎带应答 总结 我们第一章让我们对网络有了一个初步认识,第二章和第三章我们通…

SpringBoot 整合 ChatGPT API 项目实战

SpringBoot 整合 ChatGPT API 项目实战 一、准备工作 二、补全接口示例 三、申请API-KEY 四、JavaScript调用API 五、SpringBoot使用ChatGPT API 体验到了ChatGPT的强大之后,那么我们会想,如果我们想基于ChatGPT开发一个自己的聊天机器人&#xff0…

论文、专利、文献检索及图像数据工具总结

一、文献检索 1、中文文献检索参考 中文文献途径网址用途1知网https://www.cnki.net/文献检索、下载2万方数据网https://www.wanfangdata.com.cn/文献检索、下载3维普期刊http://lib.cqvip.com/文献检索、下载4浙江图书馆https://www.zjlib.cn/#searchs_1_div文献检索、下载5…

html监听界面被隐藏或显示

vue相比于小程序和uni-app 显然少了两个有点用的生命周期 onShow 应用被展示 onHide 应用被隐藏 但其实这个 要做其实也很简单 JavaScript中 有对应的visibilitychange事件可以监听 我们Html参考代码如下 <!DOCTYPE html> <html lang"en"> <head>…

8. 机器学习系统设计

假设你想建立一个垃圾邮件分类器&#xff0c;通过监督学习来构造一个分类器来区分垃圾邮件和非垃圾邮件。为了应用监督学习&#xff0c;首先要想的就是&#xff1a;如何来表示邮件的特征向量x&#xff0c;通过特征向量x和分类标签y&#xff0c;我们就能训练一个分类器&#xff…