83-QStyle和QSS

QStyle和QSS

QSS 全称 Qt Style Sheets(Qt样式表),用于美化 Qt 程序界面,类似于 CSS,但不如 CSS 强大,选择器和属性较少。

本文介绍在 PySide6 中使用QSS,但同样适用于 PyQt6、PyQt5、PySide2 等。

本文主要介绍 QSS 的加载使用以及分享,QSS 本身的语法详解请参考官方文档和其他教程。

QStyle类介绍

PySide6是一个跨平台的类库,相同的窗口和界面在不同的平台上显示的样式不一样,可以根据需要在不同的平台上设置界面不同的外观风格。

QStyle是封装GUI外观的抽象类。PySide6定义了QStyle类的一些子类,应用于不同的操作系统中。

可以用窗口、控件或应用程序的setStyle(QStyle)方法给窗口、控件或整个应用程序设置风格,用style()方法获取风格。

一个平台支持的风格名称可以用QStyleFactory.keys()方法获取,返回平台支持的风格列表,例如[‘windowsvista’,Windows’,‘Fusion’],用QStyleFactory.create(str)方法根据风格名称创建风格,并返回QStyle。

下面的程序是为整个应用程序设置风格的例子。从QComboBox列表中选择不同的界面风格,整个程序的界面风格也随之改变。

image-20230225180129472

QStyle类是一个抽象基类,它封装了GUI的外观。

from PySide6.QtWidgets import QStyle

QStyle() -> None

官方描述

Qt包含一组QStyle子类,这些子类模拟Qt支持的不同平台的样式QWindowsStyle、QMacStyle等。默认情况下,这些样式内置在Qt GUI模块中。样式也可以作为插件提供。
Qt的内置小部件使用QStyle来执行几乎所有的绘制,确保它们看起来与等效的本地小部件完全相同。下图显示了九种不同样式的QComboBox。

../../_images/qstyle-comboboxes.png

设置样式

可以使用setStyle函数设置整个应用程序的样式。它也可以由应用程序的用户使用-style命令行选项指定:

./myapplication -style windows

如果没有指定样式,Qt将为用户的平台或桌面环境选择最合适的样式。
也可以使用setStyle函数在单个小部件上设置样式。

开发风格感知的自定义小部件

如果您正在开发自定义小部件,并希望它们在所有平台上看起来都很好,则可以使用QStyle函数来执行小部件绘图的部分,如drawItemText、drawItemPixmap、drawPrimitive、drawControl和drawComplexControl。
大多数QStyle绘制函数采用四个参数:

  • 指定要绘制的图形元素的枚举值
  • 指定如何以及在何处渲染该元素的QStyleOption
  • 应用于绘制元素的QPainter
  • 进行绘图的QWidget可选

例如,如果你想在你的小部件上画一个焦点矩形,你可以写:

def paintEvent(self, */):

QStyle从QStyleOption中获取渲染图形元素所需的所有信息。小部件作为最后一个参数传递,以防样式需要它来执行特殊效果如macOS上的动画默认按钮,但它不是强制性的。事实上,通过正确设置QPainter,您可以使用QStyle在任何绘制设备上绘制,而不仅仅是小部件。

QStyleOption为可以绘制的各种类型的图形元素提供了各种子类。例如,PE_FrameFocusRect需要一个QStyleOptionFocusRect参数。

为了确保绘图操作尽可能快,QStyleOption及其子类具有公共数据成员。有关如何使用QStyleOption的详细信息,请参阅QStyleOption类文档。

为了方便起见,Qt提供了QStylePainter类,该类结合了QStyle、QPainter和QWidget。这使得书写成为可能

painter = QPainter(self)            ...
style().drawPrimitive(QStyle.PE_FrameFocusRect, option, painter, self)
创建自定义样式

您可以通过创建自定义样式为应用程序创建自定义外观。有两种方法可以创建自定义样式。在静态方法中,您可以选择一个现有的QStyle类,将其子类化,并重新实现虚拟函数来提供自定义行为,也可以从头开始创建整个QStyle类别。在动态方法中,您可以在运行时修改系统样式的行为。静态方法如下所述。QProxyStyle中描述了动态方法。

静态方法的第一步是从Qt提供的样式中选择一种,您将从中构建自定义样式。你对QStyle类的选择将取决于哪种风格最像你想要的风格。可以用作基础的最通用的类是QCommonStyle而不是QStyle。这是因为Qt要求其样式为QCommonStyle s。

根据要更改基本样式的哪些部分,必须重新实现用于绘制接口的这些部分的函数。为了说明这一点,我们将修改QWindowsStyle绘制的旋转框箭头的外观。箭头是drawPrimitive函数绘制的基本元素,因此我们需要重新实现该函数。我们需要以下类声明:

class CustomStyle(QProxyStyle):

    Q_OBJECT
# public
    CustomStyle(QWidget widget)
    ~CustomStyle() {}
    def drawPrimitive(element, option,):
                       painter, = QPainter()

为了绘制上下箭头,QSpinBox使用PE_IndicatorSpinUp和PE_IndirectorSpinDown基元元素。以下是如何重新实现drawPrimitive函数以不同的方式绘制它们:

def drawPrimitive(self, element, option,):
                                painter, = QPainter()

    if element == PE_IndicatorSpinUp or element == PE_IndicatorSpinDown:
        points = QPolygon(3)
        x = option.rect.x()
        y = option.rect.y()
        w = option.rect.width() / 2
        h = option.rect.height() / 2
        x += (option.rect.width() - w) / 2
        y += (option.rect.height() - h) / 2
        if element == PE_IndicatorSpinUp:
            points[0] = QPoint(x, y + h)
            points[1] = QPoint(x + w, y + h)
            points[2] = QPoint(x + w / 2, y)
        else: // PE_SpinBoxDown
            points[0] = QPoint(x, y)
            points[1] = QPoint(x + w, y)
            points[2] = QPoint(x + w / 2, y + h)

        if option.state  State_Enabled:
            painter.setPen(option.palette.mid().color())
            painter.setBrush(option.palette.buttonText())
        else:
            painter.setPen(option.palette.buttonText().color())
            painter.setBrush(option.palette.mid())

        painter.drawPolygon(points)
    else:
        QProxyStyle.drawPrimitive(element, option, painter, widget)

请注意,我们不使用小部件参数,只是将其传递给QWindowStyle::drawPrimitive函数。如前所述,关于要绘制什么以及应该如何绘制的信息是由QStyleOption对象指定的,因此无需询问小部件。
如果您需要使用小部件参数来获取其他信息,请在使用它之前小心确保它不是0并且类型正确。例如:

spinBox = QSpinBox(widget)
if spinBox:            ...

在实现自定义样式时,不能仅仅因为枚举值被称为PE_IndicatorSpinUp或PE_IndirectorSpinDown就认为小部件是QSpinBox。
样式示例的文档更详细地介绍了这个主题。

自定义QStyle子类当前不支持Qt样式表。我们计划在将来的版本中解决这个问题。

使用自定义样式

在Qt应用程序中有几种使用自定义样式的方法。最简单的方法是在创建QApplication对象之前,将自定义样式传递给setStyle静态函数:

from PySide6 import QtWidgets
from customstyle import *
if __name__ == "__main__":

    QApplication.setStyle(CustomStyle())
    app = QApplication([])
    spinBox = QSpinBox()
    spinBox.show()
    sys.exit(app.exec())

您可以随时调用setStyle,但通过在构造函数之前调用它,可以确保用户的首选项使用-style命令行选项设置得到尊重。

您可能希望使您的自定义样式可用于其他应用程序,这些应用程序可能不是您的,因此无法重新编译。Qt插件系统可以将样式创建为插件。作为插件创建的样式在运行时由Qt本身作为共享对象加载。有关如何创建样式插件的更多信息,请参阅Qt插件文档。

编译你的插件并将其放入Qt的plugins/styles目录。我们现在有了一个可插入的样式,Qt可以自动加载。要在现有应用程序中使用新样式,只需使用以下参数启动应用程序:

./myapplication -style custom

应用程序将使用您实现的自定义样式的外观。

从右到左的桌面

从右到左书写的语言如阿拉伯语和希伯来语通常也反映了小部件的整个布局,并要求光线来自屏幕的右上角,而不是左上角。
如果创建自定义样式,则在绘制不对称图元时应特别小心,以确保它们在镜像布局中看起来也正确。测试样式的一个简单方法是使用-reverse命令行选项运行应用程序,或者在main函数中调用setLayoutDirection。
当一种风格在从右到左的环境中很好地发挥作用时,需要记住以下几点:

  • subControlRect和subElementRect返回屏幕坐标中的矩形
  • QStyleOption::direction指示项目应沿哪个方向绘制
  • 如果某个样式不是从右到左感知的,它将显示项目,就像它是从左到右一样
  • visualRect、visualPos和visualAlign是有用的函数,可以从逻辑表示转换为屏幕表示。
  • alignedRect将返回一个与当前方向对齐的逻辑矩形
项目视图中的样式

视图中项目的绘制由代理执行。Qt的默认委托QStyledItemDelegate也用于计算项目的边界矩形,以及QStyledtemDelegate支持的各种项目数据角色的子元素。请参阅QStyledItemDelegate类描述,以了解支持哪些数据类型和角色。您可以在模型/视图编程中阅读更多关于项目数据角色的信息。
当QStyledItemDelegate绘制其项目时,它会绘制CE_ItemViewItem,并使用CT_ItemViewItem计算其大小。还要注意,它使用SE_ItemViewItemText来设置编辑器的大小。在实现样式以自定义项目视图的绘制时,需要检查QCommonStyle以及样式继承的任何其他子类的实现。通过这种方式,您可以了解其他样式元素是如何绘制的,然后可以重新实现应该以不同方式绘制的元素的绘制。
我们包含了一个小示例,其中我们自定义了项目背景的绘制。

case (PE_PanelItemViewItem): {
    painter.save()
    topLeft = option.rect.topLeft()
    bottomRight = option.rect.topRight()
    backgroundGradient = QLinearGradient(topLeft, bottomRight)
    backgroundGradient.setColorAt(0.0, QColor(Qt.yellow).lighter(190))
    backgroundGradient.setColorAt(1.0, Qt.white)
    painter.fillRect(option.rect, QBrush(backgroundGradient))
    painter.restore()
break

else:
    QProxyStyle.drawPrimitive(element, option, painter, widget)

基本元素PE_PanelItemViewItem负责绘制项目的背景,并从QCommonStyle的CE_ItemViewItem实现中调用。
要添加对绘制新数据类型和项目数据角色的支持,有必要创建自定义委托。但是,如果您只需要支持默认委托实现的数据类型,那么自定义样式就不需要附带的委托。QStyledItemDelegate类描述提供了有关自定义委托的详细信息。
项目视图标题的绘制也由样式完成,可以控制标题项目的大小以及行和列的大小。

枚举值

StateFlag
  • PySide6.QtWidgets.QStyle.StateFlag

    (继承enum. Flag)此枚举描述了在绘制原始元素时使用的标志。

    请注意,并非所有原语都使用所有这些标志,并且这些标志对不同的项目可能意味着不同的东西。

    ConstantDescription
    QStyle.State_None指示小部件没有状态。
    QStyle.State_Active指示小部件处于活动状态。
    QStyle.State_AutoRaise用于指示是否应在工具按钮上使用自动提升外观。
    QStyle.State_Children用于指示项目视图分支是否有子项。
    QStyle.State_DownArrow用于指示向下箭头是否应该在小部件上可见。
    QStyle.State_Editing用于指示是否在小部件上打开了编辑器。
    QStyle.State_Enabled用于指示小部件是否已启用。
    QStyle.State_HasEditFocus用于指示小部件当前是否具有编辑焦点。
    QStyle.State_HasFocus用于指示小部件是否有焦点。
    QStyle.State_Horizontal用于指示小部件是否水平布局,例如。工具栏。
    QStyle.State_KeyboardFocusChange用于指示焦点是否已通过键盘更改,例如制表符、后制表符或快捷键。
    QStyle.State_MouseOver用于指示小部件是否在鼠标下方。
    QStyle.State_NoChange用于指示三态复选框。
    QStyle.State_Off用于指示是否未选中小部件。
    QStyle.State_On用于指示是否选中小部件。
    QStyle.State_Raised用于指示按钮是否升起。
    QStyle.State_ReadOnly用于指示小部件是否为只读。
    QStyle.State_Selected用于指示是否选择了小部件。
    QStyle.State_Item由项目视图用于指示是否应绘制水平分支。
    QStyle.State_Open由项目视图用于指示树分支是否打开。
    QStyle.State_Sibling项目视图用于指示是否需要绘制垂直线(对于兄弟)。
    QStyle.State_Sunken用于指示小部件是否凹陷或按下。
    QStyle.State_UpArrow用于指示向上箭头是否应该在小部件上可见。
    QStyle.State_Mini用于指示迷你风格的Mac小部件或按钮。
    QStyle.State_Small用于指示小样式Mac小部件或按钮。
PrimitiveElement
  • PySide6.QtWidgets.QStyle.PrimitiveElement

    (继承enum. IntEnum)此枚举描述了各种原语元素。原语元素是常见的GUI元素,例如复选框指示符或按钮斜面。

    ConstantDescription
    QStyle.PE_PanelButtonCommand用于启动动作的按钮,例如QPushButton。
    QStyle.PE_FrameDefaultButton此框架围绕默认按钮,例如在对话框中。
    QStyle.PE_PanelButtonBevel带有按钮斜面的通用面板。
    QStyle.PE_PanelButtonTool工具按钮面板,与QToolButton一起使用。
    QStyle.PE_PanelLineEditQLineEdit的面板。
    QStyle.PE_IndicatorButtonDropDown下拉按钮的指示器,例如,显示菜单的工具按钮。
    QStyle.PE_FrameFocusRect通用焦点指示器。
    QStyle.PE_IndicatorArrowUp通用向上箭头。
    QStyle.PE_IndicatorArrowDown通用向下箭头。
    QStyle.PE_IndicatorArrowRight通用右箭头。
    QStyle.PE_IndicatorArrowLeft通用左箭头。
    QStyle.PE_IndicatorSpinUp旋转小部件的向上符号,例如QSpinBox。
    QStyle.PE_IndicatorSpinDown旋转小部件的向下符号。
    QStyle.PE_IndicatorSpinPlus增加旋转小部件的符号。
    QStyle.PE_IndicatorSpinMinus旋转小部件的减少符号。
    QStyle.PE_IndicatorItemViewItemCheck视图项的开/关指示器。
    QStyle.PE_IndicatorCheckBox开/关指示器,例如QCheckBox。
    QStyle.PE_IndicatorRadioButton独家开/关指示器,例如QRadioButton。
    QStyle.PE_IndicatorDockWidgetResizeHandle调整停靠窗口的手柄大小。
    QStyle.PE_Frame通用框架
    QStyle.PE_FrameMenu弹出窗口/菜单的框架;另请参阅QMenu。
    QStyle.PE_PanelMenuBar菜单栏面板。
    QStyle.PE_PanelScrollAreaCorner滚动区域右下角(或左下角)的面板。
    QStyle.PE_FrameDockWidget停靠窗口和工具栏的面板框架。
    QStyle.PE_FrameTabWidget标签小部件的框架。
    QStyle.PE_FrameLineEdit用于行编辑的面板框架。
    QStyle.PE_FrameGroupBox组框周围的面板框架。
    QStyle.PE_FrameButtonBevel用于按钮斜面的面板框架。
    QStyle.PE_FrameButtonTool工具按钮的面板框架。
    QStyle.PE_IndicatorHeaderArrow用于指示列表或表标题上的排序的箭头。
    QStyle.PE_FrameStatusBarItem状态栏项的框架;另请参阅QStatusBar。
    QStyle.PE_FrameWindow围绕MDI窗口或停靠窗口的框架。
    QStyle.PE_IndicatorMenuCheckMark选中菜单中使用的标记。
    QStyle.PE_IndicatorProgressChunk进度条指示器的一部分;另请参阅QProgressBar。
    QStyle.PE_IndicatorBranch用于在树视图中表示树的分支的线。
    QStyle.PE_IndicatorToolBarHandle工具栏的句柄。
    QStyle.PE_IndicatorToolBarSeparator工具栏中的分隔符。
    QStyle.PE_PanelToolBar工具栏的面板。
    QStyle.PE_PanelTipLabel提示标签的面板。
    QStyle.PE_FrameTabBarBase为选项卡栏绘制的框架,通常为不属于选项卡小部件的选项卡栏绘制。
    QStyle.PE_IndicatorTabTear已弃用。改用PE_IndicatorTabTearLeft。
    QStyle.PE_IndicatorTabTearLeft当有许多选项卡时,选项卡在可见选项卡栏的左侧部分滚动出去的指示符。
    QStyle.PE_IndicatorTabTearRight当有许多选项卡时,选项卡在可见选项卡栏的右侧部分滚动出去的指示符。
    QStyle.PE_IndicatorColumnViewArrow一个箭头在一个QColnView。
    QStyle.PE_Widget一个普通的QWidget。
    QStyle.PE_CustomBase自定义原始元素的基值。高于此的所有值都保留供自定义使用。自定义值必须大于此值。
    QStyle.PE_IndicatorItemViewItemDrop一种指示器,用于显示在项目视图中的拖放操作期间项目视图中的项目即将被删除的位置。
    QStyle.PE_PanelItemViewItem项目视图中项目的背景。
    QStyle.PE_PanelItemViewRow项目视图中行的背景。
    QStyle.PE_PanelStatusBar状态栏的面板。
    QStyle.PE_IndicatorTabClose标签栏上的关闭按钮。
    QStyle.PE_PanelMenu菜单面板。
ControlElement
  • PySide6.QtWidgets.QStyle.ControlElement

    (继承enum. IntEnum)此枚举表示一个控制元素。控制元素是执行某些操作或向用户显示信息的小部件的一部分。

    ConstantDescription
    QStyle.CE_PushButtonQPushButton可绘制CE_PushButtonBevel、CE_PushButtonLabel和PE_FrameFocusRect。
    QStyle.CE_PushButtonBevelQPushButton的斜面和默认指示器。
    QStyle.CE_PushButtonLabelQPushButton的标签(带有文本或像素图的图标)。
    QStyle.CE_DockWidgetTitle停靠窗口标题。
    QStyle.CE_Splitter拆分器句柄;另请参阅QSplitter。
    QStyle.CE_CheckBoxQCheckBox,绘制PE_IndicatorCheckBox、CE_CheckBoxLabel和PE_FrameFocusRect。
    QStyle.CE_CheckBoxLabelQCheckBox的标签(文本或像素图)。
    QStyle.CE_RadioButtonQRadioButton,绘制PE_IndicatorRadioButton、CE_RadioButtonLabel和PE_FrameFocusRect。
    QStyle.CE_RadioButtonLabelQRadioButton的标签(文本或像素图)。
    QStyle.CE_TabBarTabQTabBar中的选项卡和标签。
    QStyle.CE_TabBarTabShape选项卡栏中的选项卡形状。
    QStyle.CE_TabBarTabLabel标签中的标签。
    QStyle.CE_ProgressBar一个QProgressBar,绘制CE_ProgressBarGroove、CE_ProgressBarContents和CE_ProgressBarLabel。
    QStyle.CE_ProgressBarGroove在QProgressBar中绘制进度指示器的凹槽。
    QStyle.CE_ProgressBarContentsQProgressBar的进度指示器。
    QStyle.CE_ProgressBarLabelQProgressBar的文本标签。
    QStyle.CE_ToolButtonLabel工具按钮的标签。
    QStyle.CE_MenuBarItemQMenuBar中的菜单项。
    QStyle.CE_MenuBarEmptyAreaQMenuBar的空白区域。
    QStyle.CE_MenuItemQMenu中的菜单项。
    QStyle.CE_MenuScroller当样式支持滚动时,在QMenu中滚动区域。
    QStyle.CE_MenuTearoff表示QMenu的撕开部分的菜单项。
    QStyle.CE_MenuEmptyArea菜单中没有菜单项的区域。
    QStyle.CE_MenuHMargin菜单左边/右边的水平额外空间。
    QStyle.CE_MenuVMargin菜单顶部/底部的垂直额外空间。
    QStyle.CE_ToolBoxTabQToolBox中工具箱的选项卡和标签。
    QStyle.CE_SizeGrip窗口调整手柄大小;另请参阅QSizeGrip。
    QStyle.CE_Header一个标题。
    QStyle.CE_HeaderSection标题部分。
    QStyle.CE_HeaderLabel标头的标签。
    QStyle.CE_ScrollBarAddLine滚动条线增加指示器。(即向下滚动);另见QScrollBar。
    QStyle.CE_ScrollBarSubLine滚动条线减少指示器(即向上滚动)。
    QStyle.CE_ScrollBarAddPage滚动条页面增加指示器(即页面向下)。
    QStyle.CE_ScrollBarSubPage滚动条页面减少指示器(即页面向上)。
    QStyle.CE_ScrollBarSlider滚动条滑块。
    QStyle.CE_ScrollBarFirst滚动条第一行指示器(即主页)。
    QStyle.CE_ScrollBarLast滚动条最后一行指示器(即结束)。
    QStyle.CE_RubberBand例如在图标视图中使用的橡皮筋。
    QStyle.CE_FocusFrame样式控制的焦点框架。
    QStyle.CE_ItemViewItem项目视图中的项目。
    QStyle.CE_CustomBase自定义控件元素的基值;自定义值必须大于此值。
    QStyle.CE_ComboBoxLabel不可编辑的QComboBox的标签。
    QStyle.CE_ToolBar像QToolBar这样的工具栏。
    QStyle.CE_ToolBoxTabShape工具箱的标签形状。
    QStyle.CE_ToolBoxTabLabel工具箱的标签。
    QStyle.CE_HeaderEmptyArea标题视图中没有标题部分的区域。
    QStyle.CE_ShapedFrame具有QStyleOptionFrame中指定的形状的框架;请参阅QFrame。
SubElement
  • PySide6.QtWidgets.QStyle.SubElement

    (继承enum. IntEnum)此枚举表示小部件的子区域。样式实现使用这些区域来绘制小部件的不同部分。

    ConstantDescription
    QStyle.SE_PushButtonContents包含标签的区域(带有文本或像素图的图标)。
    QStyle.SE_PushButtonFocusRect焦点矩形的区域(通常大于内容矩形)。
    QStyle.SE_PushButtonLayoutItem对父布局重要的区域。
    QStyle.SE_PushButtonBevel[自5.15]用于按钮斜面的区域。
    QStyle.SE_CheckBoxIndicator区域为状态指示器(例如,复选标记)。
    QStyle.SE_CheckBoxContents标签的区域(文本或像素图)。
    QStyle.SE_CheckBoxFocusRect焦点指示器的区域。
    QStyle.SE_CheckBoxClickRect可点击区域,默认为SE_CheckBoxFocusRect。
    QStyle.SE_CheckBoxLayoutItem对父布局重要的区域。
    QStyle.SE_DateTimeEditLayoutItem对父布局重要的区域。
    QStyle.SE_RadioButtonIndicator状态指示器的区域。
    QStyle.SE_RadioButtonContents标签区域。
    QStyle.SE_RadioButtonFocusRect焦点指示器的区域。
    QStyle.SE_RadioButtonClickRect可点击区域,默认为SE_RadioButtonFocusRect。
    QStyle.SE_RadioButtonLayoutItem对父布局重要的区域。
    QStyle.SE_ComboBoxFocusRect焦点指示器的区域。
    QStyle.SE_SliderFocusRect焦点指示器的区域。
    QStyle.SE_SliderLayoutItem对父布局重要的区域。
    QStyle.SE_SpinBoxLayoutItem对父布局重要的区域。
    QStyle.SE_ProgressBarGroove凹槽区域。
    QStyle.SE_ProgressBarContents进度指示器的区域。
    QStyle.SE_ProgressBarLabel文本标签的区域。
    QStyle.SE_ProgressBarLayoutItem对父布局重要的区域。
    QStyle.SE_FrameContents帧内容的区域。
    QStyle.SE_ShapedFrameContents使用QStyleOptionFrame中的形状显示框架内容的区域;请参阅QFrame
    QStyle.SE_FrameLayoutItem对父布局重要的区域。
    QStyle.SE_HeaderArrow标题的排序指示符的区域。
    QStyle.SE_HeaderLabel标题中标签的区域。
    QStyle.SE_LabelLayoutItem对父布局重要的区域。
    QStyle.SE_LineEditContents行编辑内容的区域。
    QStyle.SE_TabWidgetLeftCorner选项卡小部件中左角小部件的区域。
    QStyle.SE_TabWidgetRightCorner选项卡小部件中右角小部件的区域。
    QStyle.SE_TabWidgetTabBar选项卡小部件中选项卡栏小部件的区域。
    QStyle.SE_TabWidgetTabContents选项卡小部件内容的区域。
    QStyle.SE_TabWidgetTabPane选项卡小部件窗格的区域。
    QStyle.SE_TabWidgetLayoutItem对父布局重要的区域。
    QStyle.SE_ToolBoxTabContents工具箱选项卡图标和标签的区域。
    QStyle.SE_ToolButtonLayoutItem对父布局重要的区域。
    QStyle.SE_ItemViewItemCheckIndicator视图项复选标记的区域。
    QStyle.SE_TabBarTearIndicator已弃用。改用SE_TabBarTearIndicatorLeft。
    QStyle.SE_TabBarTearIndicatorLeft标签栏左侧带有滚动箭头的撕裂指示器区域。
    QStyle.SE_TabBarTearIndicatorRight标签栏右侧带有滚动箭头的撕裂指示器区域。
    QStyle.SE_TabBarScrollLeftButton带滚动按钮的标签栏上的左滚动按钮区域。
    QStyle.SE_TabBarScrollRightButton带有滚动按钮的标签栏上的向右滚动按钮区域。
    QStyle.SE_TreeViewDisclosureItem树分支中实际公开项的区域。
    QStyle.SE_GroupBoxLayoutItem对父布局重要的区域。
    QStyle.SE_CustomBase自定义子元素的基值。自定义值必须大于此值。
    QStyle.SE_DockWidgetFloatButton坞小部件的浮动按钮。
    QStyle.SE_DockWidgetTitleBarText坞小部件标题的文本边界。
    QStyle.SE_DockWidgetCloseButton扩展坞小部件的关闭按钮。
    QStyle.SE_DockWidgetIcon码头小部件的图标。
    QStyle.SE_ComboBoxLayoutItem对父布局重要的区域。
    QStyle.SE_ItemViewItemDecoration视图项装饰的区域(图标)。
    QStyle.SE_ItemViewItemText视图项文本的区域。
    QStyle.SE_ItemViewItemFocusRect视图项的焦点矩形区域。
    QStyle.SE_TabBarTabLeftButton选项卡栏中选项卡左侧小部件的区域。
    QStyle.SE_TabBarTabRightButton选项卡栏中选项卡右侧小部件的区域。
    QStyle.SE_TabBarTabText选项卡栏中选项卡上文本的区域。
    QStyle.SE_ToolBarHandle工具栏手柄的区域。
ComplexControl
  • PySide6.QtWidgets.QStyle.ComplexControl

    (继承enum. IntEnum)此枚举描述了可用的复杂控件。复杂控件具有不同的行为,具体取决于用户单击它们的位置或按下的键。

    ConstantDescription
    QStyle.CC_SpinBox一个旋转盒,比如QSpinBox。
    QStyle.CC_ComboBox一个组合框,比如QComboBox。
    QStyle.CC_ScrollBar滚动条,如QScrollBar。
    QStyle.CC_Slider一个滑块,比如QSlider。
    QStyle.CC_ToolButton工具按钮,如QToolButton。
    QStyle.CC_TitleBar标题栏,类似于QMdiSubWindow中使用的标题栏。
    QStyle.CC_GroupBox一个分组框,比如QGroupBox。
    QStyle.CC_Dial表盘,如QDial。
    QStyle.CC_MdiControls菜单栏中用于最大化MDI子窗口的最小化、关闭和正常按钮。
    QStyle.CC_CustomBase自定义复杂控件的基值。自定义值必须大于此值。
SubControl
  • PySide6.QtWidgets.QStyle.SubControl

    (继承枚举.标志)此枚举描述了可用的子控件。子控件是复杂控件(ComplexControl)中的控制元素。

    ConstantDescription
    QStyle.SC_None与其他子控件不匹配的特殊值。
    QStyle.SC_ScrollBarAddLine滚动条添加线(即向下/向右箭头);另请参阅QScrollBar。
    QStyle.SC_ScrollBarSubLine滚动条子线(即向上/向左箭头)。
    QStyle.SC_ScrollBarAddPage滚动条添加页面(即向下页面)。
    QStyle.SC_ScrollBarSubPage滚动条子页面(即向上翻页)。
    QStyle.SC_ScrollBarFirst滚动条第一行(即主页)。
    QStyle.SC_ScrollBarLast滚动条最后一行(即结束)。
    QStyle.SC_ScrollBarSlider滚动条滑块手柄。
    QStyle.SC_ScrollBarGroove包含滑块手柄可以移动的区域的特殊子控件。
    QStyle.SC_SpinBoxUp旋转小部件向上/增加;另请参阅QSpinBox。
    QStyle.SC_SpinBoxDown旋转小部件向下/减少。
    QStyle.SC_SpinBoxFrame旋转小部件框架。
    QStyle.SC_SpinBoxEditField旋转小部件编辑字段。
    QStyle.SC_ComboBoxEditField组合框编辑字段;另请参阅QComboBox。
    QStyle.SC_ComboBoxArrow组合框箭头按钮。
    QStyle.SC_ComboBoxFrame组合框。
    QStyle.SC_ComboBoxListBoxPopup组合框弹出窗口的参考矩形。用于计算弹出窗口的位置。
    QStyle.SC_SliderGroove包含滑块手柄可以移动的区域的特殊子控件。
    QStyle.SC_SliderHandle滑块手柄。
    QStyle.SC_SliderTickmarks滑块刻度线。
    QStyle.SC_ToolButton工具按钮(另请参阅QToolButton)。
    QStyle.SC_ToolButtonMenu用于在工具按钮中打开弹出菜单的子控件。
    QStyle.SC_TitleBarSysMenu系统菜单按钮(即恢复、关闭等)。
    QStyle.SC_TitleBarMinButton最小化按钮。
    QStyle.SC_TitleBarMaxButton最大化按钮。
    QStyle.SC_TitleBarCloseButton关闭按钮。
    QStyle.SC_TitleBarLabel窗口标题标签。
    QStyle.SC_TitleBarNormalButton正常(恢复)按钮。
    QStyle.SC_TitleBarShadeButton阴影按钮。
    QStyle.SC_TitleBarUnshadeButton取消阴影按钮。
    QStyle.SC_TitleBarContextHelpButton上下文帮助按钮。
    QStyle.SC_DialHandle表盘的手柄(即您用来控制表盘的东西)。
    QStyle.SC_DialGroove表盘的凹槽。
    QStyle.SC_DialTickmarks表盘的刻度标记。
    QStyle.SC_GroupBoxFrame分组框的帧。
    QStyle.SC_GroupBoxLabel分组框的标题。
    QStyle.SC_GroupBoxCheckBox分组框的可选复选框。
    QStyle.SC_GroupBoxContents分组框内容。
    QStyle.SC_MdiNormalButton菜单栏中MDI子窗口的普通按钮。
    QStyle.SC_MdiMinButton菜单栏中MDI子窗口的最小化按钮。
    QStyle.SC_MdiCloseButton菜单栏中MDI子窗口的关闭按钮。
    QStyle.SC_All匹配所有子控件的特殊值。
PixelMetric
  • PySide6.QtWidgets.QStyle.PixelMetric

    (继承enum. IntEnum)此枚举描述了各种可用的像素指标。像素指标是由单个像素值表示的样式相关大小。

    ConstantDescription
    QStyle.PM_ButtonMargin按钮标签和框架之间的空白量。
    QStyle.PM_DockWidgetTitleBarButtonMargin停靠小部件的标题栏按钮标签和框架之间的空白量。
    QStyle.PM_ButtonDefaultIndicator默认按钮指示框的宽度。
    QStyle.PM_MenuButtonIndicator菜单按钮指示器的宽度与小部件的高度成比例。
    QStyle.PM_ButtonShiftHorizontal按下按钮时按钮的水平内容移动。
    QStyle.PM_ButtonShiftVertical按下按钮时按钮的垂直内容移动。
    QStyle.PM_DefaultFrameWidth默认帧宽(通常为2)。
    QStyle.PM_SpinBoxFrameWidth旋转框的帧宽,默认为PM_DefaultFrameWidth。
    QStyle.PM_ComboBoxFrameWidth组合框的帧宽,默认为PM_DefaultFrameWidth。
    QStyle.PM_MdiSubWindowFrameWidthMDI窗口的帧宽。
    QStyle.PM_MdiSubWindowMinimizedWidth最小化MDI窗口的宽度。
    QStyle.PM_LayoutLeftMarginQLayout的默认左边距。
    QStyle.PM_LayoutTopMarginQLayout的默认上边距。
    QStyle.PM_LayoutRightMarginQLayout的默认右边距。
    QStyle.PM_LayoutBottomMarginQLayout的默认底边距。
    QStyle.PM_LayoutHorizontalSpacingQLayout的默认水平行间距。
    QStyle.PM_LayoutVerticalSpacingQLayout的默认垂直行间距。
    QStyle.PM_MaximumDragDistance拖动时鼠标和滚动条之间允许的最大距离。超过指定的距离将导致滑块跳回原始位置;值-1禁用此行为。
    QStyle.PM_ScrollBarExtent垂直滚动条的宽度和水平滚动条的高度。
    QStyle.PM_ScrollBarSliderMin垂直滚动条滑块的最小高度和水平滚动条滑块的最小宽度。
    QStyle.PM_SliderThickness总滑块厚度。
    QStyle.PM_SliderControlThickness滑块手柄的厚度。
    QStyle.PM_SliderLength滑块的长度。
    QStyle.PM_SliderTickmarkOffset刻度线和滑块之间的偏移量。
    QStyle.PM_SliderSpaceAvailable滑块移动的可用空间。
    QStyle.PM_DockWidgetSeparatorExtent水平停靠窗口中分隔符的宽度和垂直停靠窗口中分隔符的高度。
    QStyle.PM_DockWidgetHandleExtent水平停靠窗口中手柄的宽度和垂直停靠窗口中手柄的高度。
    QStyle.PM_DockWidgetFrameWidth停靠窗口的框架宽度。
    QStyle.PM_DockWidgetTitleMargin停靠窗口标题的边距。
    QStyle.PM_MenuBarPanelWidth菜单栏的框架宽度,默认为PM_DefaultFrameWidth。
    QStyle.PM_MenuBarItemSpacing菜单栏项之间的间距。
    QStyle.PM_MenuBarHMargin菜单栏项和栏的左/右之间的间距。
    QStyle.PM_MenuBarVMargin菜单栏项与栏顶/栏底之间的间距。
    QStyle.PM_ToolBarFrameWidth工具栏周围框架的宽度。
    QStyle.PM_ToolBarHandleExtent水平工具栏中工具栏句柄的宽度和垂直工具栏中句柄的高度。
    QStyle.PM_ToolBarItemMargin工具栏框架和项目之间的间距。
    QStyle.PM_ToolBarItemSpacing工具栏项之间的间距。
    QStyle.PM_ToolBarSeparatorExtent水平工具栏中工具栏分隔符的宽度和垂直工具栏中分隔符的高度。
    QStyle.PM_ToolBarExtensionExtent水平工具栏中工具栏扩展按钮的宽度和垂直工具栏中按钮的高度。
    QStyle.PM_TabBarTabOverlap选项卡应重叠的像素数。(目前仅用于样式,不在QTabBar内部)
    QStyle.PM_TabBarTabHSpace额外的空间添加到标签宽度。
    QStyle.PM_TabBarTabVSpace额外的空间添加到标签高度。
    QStyle.PM_TabBarBaseHeight标签栏和标签页之间区域的高度。
    QStyle.PM_TabBarBaseOverlap标签栏与标签栏底座重叠的像素数。
    QStyle.PM_TabBarScrollButtonWidth
    QStyle.PM_TabBarTabShiftHorizontal选择选项卡时的水平像素偏移。
    QStyle.PM_TabBarTabShiftVertical选择选项卡时的垂直像素偏移。
    QStyle.PM_ProgressBarChunkWidth进度条指示器中块的宽度。
    QStyle.PM_SplitterWidth分离器的宽度。
    QStyle.PM_TitleBarHeight标题栏的高度。
    QStyle.PM_IndicatorWidth复选框指示器的宽度。
    QStyle.PM_IndicatorHeight复选框指示器的高度。
    QStyle.PM_ExclusiveIndicatorWidth单选按钮指示器的宽度。
    QStyle.PM_ExclusiveIndicatorHeight单选按钮指示器的高度。
    QStyle.PM_MenuPanelWidthQMenu的边框宽度(应用于所有边)。
    QStyle.PM_MenuHMarginQMenu的附加边框(用于左侧和右侧)。
    QStyle.PM_MenuVMarginQMenu的附加边框(用于底部和顶部)。
    QStyle.PM_MenuScrollerHeightQMenu中滚动区域的高度。
    QStyle.PM_MenuTearoffHeightQMenu中撕裂区域的高度。
    QStyle.PM_MenuDesktopFrameWidth桌面上菜单的框架宽度。
    QStyle.PM_HeaderMarkSize标题中排序指示符的大小。
    QStyle.PM_HeaderGripMargin标题中调整大小手柄的大小。
    QStyle.PM_HeaderMargin排序指示符和文本之间的边距大小。
    QStyle.PM_SpinBoxSliderHeight可选旋转框滑块的高度。
    QStyle.PM_ToolBarIconSize默认工具栏图标大小
    QStyle.PM_SmallIconSize默认小图标大小
    QStyle.PM_LargeIconSize默认大图标大小
    QStyle.PM_FocusFrameHMargin焦点框架将开始小部件的水平边距。
    QStyle.PM_FocusFrameVMargin焦点框架将开始小部件的垂直边距。
    QStyle.PM_IconViewIconSize图标视图中图标的默认大小。
    QStyle.PM_ListViewIconSize列表视图中图标的默认大小。
    QStyle.PM_ToolTipLabelFrameWidth刀尖标签的框架宽度。
    QStyle.PM_CheckBoxLabelSpacing复选框指示符与其标签之间的行间距。
    QStyle.PM_RadioButtonLabelSpacing单选按钮指示器与其标签之间的行间距。
    QStyle.PM_TabBarIconSize标签栏的默认图标大小。
    QStyle.PM_SizeGripSize大小握把的大小。
    QStyle.PM_MessageBoxIconSize消息框中标准图标的大小
    QStyle.PM_ButtonIconSize按钮图标的默认大小
    QStyle.PM_TextCursorWidth行编辑或文本编辑中光标的宽度
    QStyle.PM_TabBar_ScrollButtonOverlap标签栏中左右按钮之间的距离。
    QStyle.PM_TabCloseIndicatorWidth标签栏中标签页上关闭按钮的默认宽度。
    QStyle.PM_TabCloseIndicatorHeight标签栏中标签页上关闭按钮的默认高度。
    QStyle.PM_ScrollView_ScrollBarSpacing框架和滚动条之间的距离SH_ScrollView_FrameOnlyAroundContents设置。
    QStyle.PM_ScrollView_ScrollBarOverlap滚动条和滚动内容之间的重叠
    QStyle.PM_SubMenuOverlap子菜单与其父菜单之间的水平重叠。
    QStyle.PM_TreeViewIndentation树视图中项目的缩进。
    QStyle.PM_HeaderDefaultSectionSizeHorizontal水平标题中部分的默认大小。此枚举值已在Qt 5.5中引入。
    QStyle.PM_HeaderDefaultSectionSizeVertical垂直标题中部分的默认大小。此枚举值已在Qt 5.5中引入。
    QStyle.PM_TitleBarButtonIconSize标题栏上按钮图标的大小。
    QStyle.PM_TitleBarButtonSize标题栏上按钮的大小。
    QStyle.PM_LineEditIconSize行编辑中图标的默认大小。
    QStyle.PM_LineEditIconMargin行编辑中图标周围的边距。
    QStyle.PM_CustomBase自定义像素指标的基值。自定义值必须大于此值。
ContentsType
  • PySide6.QtWidgets.QStyle.ContentsType

    (继承enum. IntEnum)此枚举描述了可用的内容类型。这些用于计算各种小部件内容的大小。

    ConstantDescription
    QStyle.CT_CheckBox一个复选框,如QCheckBox。
    QStyle.CT_ComboBox组合框,如QComboBox。
    QStyle.CT_HeaderSection标题部分,如QHeader。
    QStyle.CT_LineEdit行编辑,如QLineEdit。
    QStyle.CT_Menu菜单,如QMenu。
    QStyle.CT_MenuBar菜单栏,如QMenuBar。
    QStyle.CT_MenuBarItem菜单栏项,类似于QMenuBar中的按钮。
    QStyle.CT_MenuItem菜单项,如QMenuItem。
    QStyle.CT_ProgressBar进度条,如QProgressBar。
    QStyle.CT_PushButton一个按钮,如QPushButton。
    QStyle.CT_RadioButton单选按钮,如QRadioButton。
    QStyle.CT_SizeGrip一个尺寸的握把,比如QSizeGrip。
    QStyle.CT_Slider一个滑块,比如QSlider。
    QStyle.CT_ScrollBar滚动条,如QScrollBar。
    QStyle.CT_SpinBox一个旋转盒,比如QSpinBox。
    QStyle.CT_Splitter一个分离器,比如QSplitter。
    QStyle.CT_TabBarTab标签栏上的标签,如QTabBar。
    QStyle.CT_TabWidget一个选项卡小部件,例如QTabWidget。
    QStyle.CT_ToolButton工具按钮,如QToolButton。
    QStyle.CT_GroupBox一个分组框,比如QGroupBox。
    QStyle.CT_ItemViewItem项目视图中的项目。
    QStyle.CT_CustomBase自定义内容类型的基值。自定义值必须大于此值。
    QStyle.CT_MdiControls菜单栏中用于最大化MDI子窗口的最小化、正常和关闭按钮。
RequestSoftwareInputPanel
  • PySide6.QtWidgets.QStyle.RequestSoftwareInputPanel

    此枚举描述了在什么情况下支持输入的小部件将请求软件输入面板。

    ConstantDescription
    QStyle.RSIP_OnMouseClickAndAlreadyFocused如果用户单击小部件,则请求输入面板,但前提是它已经聚焦。
    QStyle.RSIP_OnMouseClick如果用户单击小部件,则请求输入面板。
StyleHint
  • PySide6.QtWidgets.QStyle.StyleHint

    (继承enum. IntEnum)此枚举描述了可用的样式提示。样式提示是一般的外观和/或感觉提示。

    ConstantDescription
    QStyle.SH_EtchDisabledText禁用的文本是“蚀刻”,因为它是在Windows上。
    QStyle.SH_DitherDisabledText禁用的文本会像在Motif上一样抖动。
    QStyle.SH_ScrollBar_ContextMenu滚动条是否具有上下文菜单。
    QStyle.SH_ScrollBar_MiddleClickAbsolutePosition一个布尔值。如果为真,单击滚动条的中间位置会导致滑块跳转到该位置。如果为假,则忽略中间单击。
    QStyle.SH_ScrollBar_LeftClickAbsolutePosition一个布尔值。如果为true,左键单击滚动条会导致滑块跳转到该位置。如果为false,左键单击将对每个控件进行适当的操作。
    QStyle.SH_ScrollBar_ScrollWhenPointerLeavesControl一个布尔值。如果为true,当单击滚动条SubControl时,按住鼠标按钮并将指针移到SubControl之外,滚动条继续滚动。如果为false,当指针离开SubControl时,滚动条停止滚动。
    QStyle.SH_ScrollBar_RollBetweenButtons布尔值。如果为true,单击滚动条按钮(SC_ScrollBarAddLine或SC_ScrollBarSubLine)并拖动到相反的按钮(滚动)时,将按下新按钮并释放旧按钮。当为false时,释放原始按钮,什么也没发生(如按钮)。
    QStyle.SH_TabBar_AlignmentQTabWidget中选项卡的对齐方式。可能的值是对齐左、对齐中心和对齐右。
    QStyle.SH_Header_ArrowAlignment排序指示符的位置可能出现在列表或表格标题中。可能的值是对齐值(即对齐标志的OR组合)。
    QStyle.SH_Slider_SnapToValue滑块在移动时捕捉到值,就像在Windows上一样。
    QStyle.SH_Slider_SloppyKeyEvents按键按压以草率的方式处理,即在垂直滑块上向左减去一条线。
    QStyle.SH_ProgressDialog_CenterCancelButton进度对话框上的居中按钮,否则右对齐。
    QStyle.SH_ProgressDialog_TextLabelAlignment正在进行的对话框中文本标签的对齐方式;在Windows上对齐中心,否则对齐中心。
    QStyle.SH_PrintDialog_RightAlignButtons右对齐打印对话框中的按钮,就像在Windows上所做的那样。
    QStyle.SH_MainWindow_SpaceBelowMenuBar菜单栏和停靠区之间的一个或两个像素空间,就像在Windows上所做的那样。
    QStyle.SH_FontDialog_SelectAssociatedText在行编辑中选择文本,或者在从列表框中选择项目时,或者在行编辑接收焦点时选择文本,就像在Windows上所做的那样。
    QStyle.SH_Menu_KeyboardSearch键入会导致菜单搜索相关项目,否则只考虑助记符。
    QStyle.SH_Menu_AllowActiveAndDisabled允许禁用的菜单项处于活动状态。
    QStyle.SH_Menu_SpaceActivatesItem按空格键激活项目,就像在Motif上做的那样。
    QStyle.SH_Menu_SubMenuPopupDelay在打开子菜单之前等待的毫秒数(Windows上为256,Motif上为96)。
    QStyle.SH_Menu_Scrollable弹出菜单是否必须支持滚动。
    QStyle.SH_Menu_SloppySubMenus弹出菜单是否必须支持用户将鼠标光标移动到子菜单,同时交叉菜单的其他项目。大多数现代桌面平台都支持这一点。
    QStyle.SH_Menu_SubMenuUniDirection从Qt 5.5开始。如果光标必须向子菜单移动(就像在macOS上一样),或者光标可以向任何方向移动,只要它在草率超时之前到达子菜单。
    QStyle.SH_Menu_SubMenuUniDirectionFailCount自Qt 5.5。当定义SH_Menu_SubMenuUniDirection时,这个枚举定义了在丢弃草率子菜单之前失败的鼠标移动次数。这可以用来控制uni方向算法的“严格性”。
    QStyle.SH_Menu_SubMenuSloppySelectOtherActions从Qt 5.5开始。当鼠标移动到草率的子菜单时,是否应该选择其他执行事项。
    QStyle.SH_Menu_SubMenuSloppyCloseTimeout从Qt 5.5开始。用于关闭草率子菜单的超时。
    QStyle.SH_Menu_SubMenuResetWhenReenteringParent从Qt 5.5开始。当从子子菜单进入父菜单时,是否应该重置草率状态,有效地关闭子菜单并使当前子菜单处于活动状态。
    QStyle.SH_Menu_SubMenuDontStartSloppyOnLeave从Qt 5.5开始。当鼠标离开子菜单时,不要启动草率的计时器。
    QStyle.SH_ScrollView_FrameOnlyAroundContents滚动视图是否仅围绕内容(如Motif)或围绕内容、滚动条和角小部件(如Windows)绘制框架。
    QStyle.SH_MenuBar_AltKeyNavigation菜单栏项目可通过按Alt导航,然后使用箭头键选择所需项目。
    QStyle.SH_ComboBox_ListMouseTracking组合框下拉列表中的鼠标跟踪。
    QStyle.SH_Menu_MouseTracking弹出菜单中的鼠标跟踪。
    QStyle.SH_MenuBar_MouseTracking菜单栏中的鼠标跟踪。
    QStyle.SH_Menu_FillScreenWithScroll滚动弹出窗口是否应该在滚动时填满屏幕。
    QStyle.SH_Menu_SelectionWrap弹出窗口是否应该允许选择换行,即选择下一项是否应该是第一项。
    QStyle.SH_ItemView_ChangeHighlightOnFocus失去焦点时使选定的项目变灰。
    QStyle.SH_Widget_ShareActivation使用浮动无模式对话框打开共享激活。
    QStyle.SH_TabBar_SelectMouseType应选择哪种类型的鼠标事件导致选项卡。
    QStyle.SH_ListViewExpand_SelectMouseType应该选择哪种类型的鼠标事件导致列表视图展开。
    QStyle.SH_TabBar_PreferNoArrows标签栏是否应建议大小以防止滚动箭头。
    QStyle.SH_ComboBox_Popup允许弹出作为组合框下拉菜单。
    QStyle.SH_Workspace_FillSpaceOnMaximize工作空间应该最大化客户区。
    QStyle.SH_TitleBar_NoBorder标题栏没有边框。
    QStyle.SH_Slider_StopMouseOverSlider当滑块到达鼠标位置时停止自动重复。
    QStyle.SH_BlinkCursorWhenTextSelected选择文本时光标是否应闪烁。
    QStyle.SH_RichText_FullWidthSelection富文本选择是否应扩展到文档的整个宽度。
    QStyle.SH_GroupBox_TextLabelVerticalAlignment如何垂直对齐组框的文本标签。
    QStyle.SH_GroupBox_TextLabelColor如何绘制组框的文本标签。
    QStyle.SH_DialogButtons_DefaultButton哪个按钮在对话框的按钮小部件中获得默认状态。
    QStyle.SH_ToolBox_SelectedPageTitleBoldQToolBox中选定页面标题的粗体。
    QStyle.SH_LineEdit_PasswordCharacter用于密码的Unicode字符。
    QStyle.SH_LineEdit_PasswordMaskDelay确定可见字符被密码字符屏蔽之前的延迟,以毫秒为单位。此枚举值在Qt 5.4中添加。
    QStyle.SH_Table_GridLineColor表的网格的RGBA值。
    QStyle.SH_UnderlineShortcut快捷方式是否下划线。
    QStyle.SH_SpinBox_AnimateButton在旋转框中按下向上或向下时,为单击设置动画。
    QStyle.SH_SpinBox_KeyPressAutoRepeatRate自动重复间隔为旋转框按键。
    QStyle.SH_SpinBox_ClickAutoRepeatRate旋转框鼠标点击的自动重复间隔。
    QStyle.SH_SpinBox_ClickAutoRepeatThreshold旋转框鼠标点击的自动重复阈值。
    QStyle.SH_SpinBox_SelectOnStep使用按钮或向上/向下键更改值是否会自动选择文本。
    QStyle.SH_ToolTipLabel_Opacity表示提示标签不透明度的整数,0是完全透明的,255是完全不透明的。
    QStyle.SH_DrawMenuBarSeparator指示菜单栏是否绘制分隔符。
    QStyle.SH_TitleBar_ModifyNotification指示标题栏是否应为已修改的窗口显示“*”。
    QStyle.SH_Button_FocusPolicy按钮的默认焦点策略。
    QStyle.SH_CustomBase自定义样式提示的基值。自定义值必须大于此值。
    QStyle.SH_MessageBox_UseBorderForButtonSpacing一个布尔值,指示在消息框中按钮的行间距使用按钮的边框(计算为按钮高度的一半)。
    QStyle.SH_MessageBox_CenterButtons一个布尔值,指示消息框中的按钮是否应该居中(参见QDialogButtonBox::setCentated())。
    QStyle.SH_MessageBox_TextInteractionFlags一个布尔值,指示消息框中的文本是否应允许用户交互(例如选择)。
    QStyle.SH_TitleBar_AutoRaise一个布尔值,指示当鼠标悬停在标题栏上时是否应该更新标题栏上的控件。
    QStyle.SH_ToolButton_PopupDelay一个int,指示附加到工具按钮的菜单的弹出延迟(以毫秒为单位)。
    QStyle.SH_FocusFrame_Mask焦点框架的掩码。
    QStyle.SH_RubberBand_Mask橡皮筋的面具。
    QStyle.SH_WindowFrame_Mask窗框的面具。
    QStyle.SH_SpinControls_DisableOnBounds确定到达自旋范围边界时自旋控件是否显示为禁用。
    QStyle.SH_Dial_BackgroundRole为拨号小部件定义样式的首选背景角色(如ColorRole)。
    QStyle.SH_ComboBox_LayoutDirection组合框的布局方向。默认情况下,它应该与QStyleOption::direction变量所指示的相同。
    QStyle.SH_ItemView_EllipsisLocation应为太长而不适合视图项的项目文本添加省略号的位置。
    QStyle.SH_ItemView_ShowDecorationSelected选择项目视图中的项目时,还突出显示分支或其他装饰。
    QStyle.SH_ItemView_ActivateItemOnSingleClick当用户单击项目视图中项目中的项目时发出激活信号。否则,当用户双击项目时发出信号。
    QStyle.SH_Slider_AbsoluteSetButtons哪些鼠标按钮会导致滑块将值设置为单击的位置。
    QStyle.SH_Slider_PageSetButtons哪些鼠标按钮导致滑块对值进行分页。
    QStyle.SH_TabBar_ElideMode标签栏的默认省略样式。
    QStyle.SH_DialogButtonLayout控制按钮在QDialogButtonBox中的布局方式,返回ButtonLayout枚举。
    QStyle.SH_WizardStyle控制QWizard的外观。返回一个WizardStyle枚举。
    QStyle.SH_FormLayoutWrapPolicy为行在QFormLayout中的包装方式提供默认值。返回RowWrapPolicy枚举。
    QStyle.SH_FormLayoutFieldGrowthPolicy为字段在QFormLayout中的增长方式提供默认值。返回一个FieldGrothPolicy枚举。
    QStyle.SH_FormLayoutFormAlignment为QFormLayout如何在可用空间内对齐其内容提供默认值。返回对齐枚举。
    QStyle.SH_FormLayoutLabelAlignment为QFormLayout如何在可用空间内对齐标签提供默认值。返回对齐枚举。
    QStyle.SH_ItemView_ArrowKeysNavigateIntoChildren控制树视图在展开并按下右箭头键时是否选择第一个子视图。
    QStyle.SH_ComboBox_PopupFrameStyle绘制组合框弹出菜单时使用的框架样式。
    QStyle.SH_DialogButtonBox_ButtonsHaveIcons指示QDialogButtonBox中的标准按钮是否应该有图标。
    QStyle.SH_ItemView_MovementWithoutUpdatingSelection项目视图能够在不更改选择的情况下指示当前项目。
    QStyle.SH_ToolTip_Mask工具尖端的掩码。
    QStyle.SH_FocusFrame_AboveWidgetFocus usFrame堆叠在它“关注”的小部件上方。
    QStyle.SH_TextControl_FocusIndicatorTextCharFormat指定用于突出显示例如在QTextBrowser中显示的富文本文档中的焦点锚点的文本格式。该格式必须是QStyleHintBack nVariant返回值的变体中返回的QTextCharFormat。OutlinePen属性用于突出显示区域的轮廓,Background Brush用于突出显示区域的背景。
    QStyle.SH_Menu_FlashTriggeredItem闪光触发项。
    QStyle.SH_Menu_FadeOutOnHide淡出菜单,而不是立即隐藏它。
    QStyle.SH_TabWidget_DefaultTabPosition标签栏在标签小部件中的默认位置。
    QStyle.SH_ToolBar_Movable默认情况下确定工具栏是否可移动。
    QStyle.SH_ItemView_PaintAlternatingRowColorsForEmptyAreaQTreeView是否为没有任何项目的区域绘制交替的行颜色。
    QStyle.SH_Menu_Mask弹出菜单的蒙版。
    QStyle.SH_ItemView_DrawDelegateFrame确定是否应该有委托小部件的框架。
    QStyle.SH_TabBar_CloseButtonPosition确定选项卡栏中选项卡上关闭按钮的位置。
    QStyle.SH_DockWidget_ButtonsHaveFrame确定dockwidget按钮是否应该有框架。默认为真。
    QStyle.SH_ToolButtonStyle确定使用ToolButtonFollowStyle的工具按钮的默认系统样式。
    QStyle.SH_RequestSoftwareInputPanel确定何时应由输入小部件请求软件输入面板。返回RequestSoftwareInputPanel类型的枚举。
    QStyle.SH_ScrollBar_Transient确定样式是否支持瞬态滚动条。瞬态滚动条在内容滚动时出现,在不再需要时消失。
    QStyle.SH_Menu_SupportsSections确定样式是在菜单中显示部分还是将它们视为普通分隔符。部分是带有文本和图标提示的分隔符。
    QStyle.SH_ToolTip_WakeUpDelay确定显示工具提示之前的延迟,以毫秒为单位。
    QStyle.SH_ToolTip_FallAsleepDelay确定显示工具提示时需要新的唤醒时间之前的延迟(以毫秒为单位)。当不需要新的唤醒时,几乎会立即显示用户请求的工具提示。
    QStyle.SH_Widget_Animate已弃用。改用SH_Widget_Animation_Duration。
    QStyle.SH_Splitter_OpaqueResize确定在交互移动拆分器时是否动态(不透明地)调整小部件的大小。这个枚举值是在Qt 5.2中引入的。
    QStyle.SH_TabBar_ChangeCurrentDelay确定在拖动选项卡时更改当前选项卡之前的延迟,以毫秒为单位。此枚举值已在Qt 5.4中引入
    QStyle.SH_ItemView_ScrollMode样式指定的默认垂直和水平滚动模式。可以用setVerticalScrollMode()和setHorizontalScrollMode()覆盖。Qt 5.7中引入了这个枚举值。
    QStyle.SH_TitleBar_ShowToolTipsOnButtons确定工具提示是否显示在窗口标题栏按钮上。例如,Mac样式将其设置为false。此枚举值已在Qt 5.10中引入。
    QStyle.SH_Widget_Animation_Duration确定动画应该持续多长时间(以毫秒为单位)。值等于零意味着动画将被禁用。此枚举值已在Qt 5.10中引入。
    QStyle.SH_ComboBox_AllowWheelScrolling确定鼠标滚轮是否可用于在QComboBox内滚动。默认情况下,除Mac样式之外的所有样式都启用此枚举值。此枚举值已在Qt 5.10中引入。
    QStyle.SH_SpinBox_ButtonsInsideFrame确定旋转框按钮是否在行编辑框架内。此枚举值已在Qt 5.11中引入。
    QStyle.SH_SpinBox_StepModifier确定哪个KeyboardModifier增加了QAbstractSpinBox的步进率。可能的值是NoModifier、ControlModifier(默认)或ShiftModifier。NoModifier禁用此功能。此枚举值已在Qt 5.12中引入。
    QStyle.SH_TabBar_AllowWheelScrolling确定鼠标滚轮是否可用于在QTabBar的选项卡中循环。此枚举值已在Qt 6.1中引入。
    QStyle.SH_Table_AlwaysDrawLeftTopGridLines确定在隐藏标题时是否在表格中绘制最左边和顶部的网格线。默认为假。此枚举值已在Qt 6.3中引入。
StandardPixmap
  • PySide6.QtWidgets.QStyle.StandardPixmap

    (继承enum. IntEnum)此枚举描述了可用的标准像素图。标准像素图是可以遵循某些现有GUI样式或指南的像素图。

    ConstantDescription
    QStyle.SP_TitleBarMinButton最小化标题栏上的按钮(例如,在QMdiSubWindow中)。
    QStyle.SP_TitleBarMenuButton标题栏上的菜单按钮。
    QStyle.SP_TitleBarMaxButton最大化标题栏上的按钮。
    QStyle.SP_TitleBarCloseButton关闭标题栏上的按钮。
    QStyle.SP_TitleBarNormalButton标题栏上的正常(恢复)按钮。
    QStyle.SP_TitleBarShadeButton标题栏上的阴影按钮。
    QStyle.SP_TitleBarUnshadeButton取消标题栏上的阴影按钮。
    QStyle.SP_TitleBarContextHelpButton标题栏上的上下文帮助按钮。
    QStyle.SP_MessageBoxInformation“信息”图标。
    QStyle.SP_MessageBoxWarning“警告”图标。
    QStyle.SP_MessageBoxCritical“关键”图标。
    QStyle.SP_MessageBoxQuestion“问题”图标。
    QStyle.SP_DesktopIcon“桌面”图标。
    QStyle.SP_TrashIcon“垃圾”图标。
    QStyle.SP_ComputerIcon“我的电脑”图标。
    QStyle.SP_DriveFDIcon软盘图标。
    QStyle.SP_DriveHDIcon硬盘图标。
    QStyle.SP_DriveCDIconCD图标。
    QStyle.SP_DriveDVDIconDVD图标。
    QStyle.SP_DriveNetIcon网络图标。
    QStyle.SP_DirHomeIcon主目录图标。
    QStyle.SP_DirOpenIcon打开目录图标。
    QStyle.SP_DirClosedIcon关闭的目录图标。
    QStyle.SP_DirIcon目录图标。
    QStyle.SP_DirLinkIcon目录图标的链接。
    QStyle.SP_DirLinkOpenIcon打开目录图标的链接。
    QStyle.SP_FileIcon文件图标。
    QStyle.SP_FileLinkIcon文件图标的链接。
    QStyle.SP_FileDialogStart文件对话框中的“开始”图标。
    QStyle.SP_FileDialogEnd文件对话框中的“结束”图标。
    QStyle.SP_FileDialogToParent文件对话框中的“父目录”图标。
    QStyle.SP_FileDialogNewFolder文件对话框中的“创建新文件夹”图标。
    QStyle.SP_FileDialogDetailedView文件对话框中的详细视图图标。
    QStyle.SP_FileDialogInfoView文件对话框中的文件信息图标。
    QStyle.SP_FileDialogContentsView文件对话框中的内容视图图标。
    QStyle.SP_FileDialogListView文件对话框中的列表视图图标。
    QStyle.SP_FileDialogBack文件对话框中的向后箭头。
    QStyle.SP_DockWidgetCloseButton停靠窗口上的关闭按钮(另请参阅QDockWidget)。
    QStyle.SP_ToolBarHorizontalExtensionButton水平工具栏的扩展按钮。
    QStyle.SP_ToolBarVerticalExtensionButton垂直工具栏的扩展按钮。
    QStyle.SP_DialogOkButtonQDialogButtonBox中标准OK按钮的图标。
    QStyle.SP_DialogCancelButtonQDialogButtonBox中标准取消按钮的图标。
    QStyle.SP_DialogHelpButtonQDialogButtonBox中标准帮助按钮的图标。
    QStyle.SP_DialogOpenButtonQDialogButtonBox中标准打开按钮的图标。
    QStyle.SP_DialogSaveButtonQDialogButtonBox中标准保存按钮的图标。
    QStyle.SP_DialogCloseButtonQDialogButtonBox中标准关闭按钮的图标。
    QStyle.SP_DialogApplyButtonQDialogButtonBox中标准应用按钮的图标。
    QStyle.SP_DialogResetButtonQDialogButtonBox中标准重置按钮的图标。
    QStyle.SP_DialogDiscardButtonQDialogButtonBox中标准丢弃按钮的图标。
    QStyle.SP_DialogYesButtonQDialogButtonBox中标准Yes按钮的图标。
    QStyle.SP_DialogNoButtonQDialogButtonBox中标准No按钮的图标。
    QStyle.SP_ArrowUp图标箭头指向上方。
    QStyle.SP_ArrowDown图标箭头指向下方。
    QStyle.SP_ArrowLeft图标箭头指向左侧。
    QStyle.SP_ArrowRight指向右侧的图标箭头。
    QStyle.SP_ArrowBack当当前布局方向为LeftToright时等效于SP_ArrowLeft,否则SP_ArrowRight。
    QStyle.SP_ArrowForward当当前布局方向为LeftToright时等效于SP_ArrowRight,否则SP_ArrowLeft。
    QStyle.SP_CommandLink用于指示Vista样式命令链接字形的图标。
    QStyle.SP_VistaShield用于在Windows Vista上指示UAC提示的图标。这将在所有其他平台上返回一个空像素图或图标。
    QStyle.SP_BrowserReload指示应重新加载当前页面的图标。
    QStyle.SP_BrowserStop指示页面加载应停止的图标。
    QStyle.SP_MediaPlay指示媒体应开始播放的图标。
    QStyle.SP_MediaStop指示媒体应停止播放的图标。
    QStyle.SP_MediaPause指示媒体应暂停播放的图标。
    QStyle.SP_MediaSkipForward指示媒体应向前跳过的图标。
    QStyle.SP_MediaSkipBackward指示媒体应向后跳过的图标。
    QStyle.SP_MediaSeekForward表示媒体应向前寻找的图标。
    QStyle.SP_MediaSeekBackward表示媒体应向后查找的图标。
    QStyle.SP_MediaVolume指示音量控制的图标。
    QStyle.SP_MediaVolumeMuted指示静音音量控制的图标。
    QStyle.SP_LineEditClearButtonQLineEdit中标准清除按钮的图标。
    QStyle.SP_DialogYesToAllButtonQDialogButtonBox中标准YesToAll按钮的图标。
    QStyle.SP_DialogNoToAllButtonQDialogButtonBox中标准NoToAll按钮的图标。
    QStyle.SP_DialogSaveAllButtonQDialogButtonBox中标准SaveAll按钮的图标。
    QStyle.SP_DialogAbortButtonQDialogButtonBox中标准Abort按钮的图标。
    QStyle.SP_DialogRetryButtonQDialogButtonBox中标准重试按钮的图标。
    QStyle.SP_DialogIgnoreButtonQDialogButtonBox中标准忽略按钮的图标。
    QStyle.SP_RestoreDefaultsButtonQDialogButtonBox中标准RestoreDefaults按钮的图标。
    QStyle.SP_TabCloseButtonQTabBar选项卡中关闭按钮的图标。
    QStyle.SP_CustomBase自定义标准像素图的基值;自定义值必须大于此值。

方法

方法汇总
方法描述
combinedLayoutSpacing(controls1: PySide6.QtWidgets.QSizePolicy.ControlType, controls2: PySide6.QtWidgets.QSizePolicy.ControlType, orientation: PySide6.QtCore.Qt.Orientation, option: Union[PySide6.QtWidgets.QStyleOption, NoneType] = None, widget: Union[PySide6.QtWidgets.QWidget, NoneType] = None) -> int返回布局中控件1和控件2之间应使用的间距。方向指定控件是并排放置还是垂直堆叠。option参数可用于传递有关父窗口小部件的额外信息。小部件参数是可选的,如果选项为None,也可以使用。 controls1和controls2是零个或多个控制类型的OR组合。 此函数由布局系统调用。仅当PM_LayoutHorizontalSpacing或PM_Layout VerticalSpacing返回负值时才使用。
name() -> str返回样式的名称。 此值可用于使用create创建样式。
proxy() -> PySide6.QtWidgets.QStyle此函数返回此样式的当前代理。默认情况下,大多数样式将返回它们自己。但是,当使用代理样式时,它将允许该样式回调到其代理中。
[Static]alignedRect(direction: PySide6.QtCore.Qt.LayoutDirection, alignment: PySide6.QtCore.Qt.AlignmentFlag, size: PySide6.QtCore.QSize, rectangle: PySide6.QtCore.QRect) -> PySide6.QtCore.QRect返回指定大小的新矩形,该矩形根据指定的对齐方式和方向与给定矩形对齐。
[Static]sliderPositionFromValue(min: int, max: int, val: int, space: int, upsideDown: bool = False) -> int将给定的logicalValue转换为像素位置。最小参数映射到0,最大值映射到跨度,其他值均匀分布在两者之间。 如果跨度小于4096,此函数可以处理整个整数范围而不会溢出。 默认情况下,此函数假定水平项目的最大值在右侧,垂直项目的最大数值在底部。将upsideDown参数设置为true可反转此行为。
[Static]sliderValueFromPosition(min: int, max: int, pos: int, space: int, upsideDown: bool = False) -> int将给定的像素位置转换为逻辑值。0映射到最小参数,跨度映射到最大值,其他值均匀分布在两者之间。 此函数可以处理整个整数范围而不会溢出。 默认情况下,此函数假定水平项目的最大值在右侧,垂直项目的最大数值在底部。将upsideDown参数设置为true可反转此行为。
[Static]visualAlignment(direction: PySide6.QtCore.Qt.LayoutDirection, alignment: PySide6.QtCore.Qt.AlignmentFlag) -> PySide6.QtCore.Qt.AlignmentFlag根据布局方向,将不带AlignAbsolute的AlignLeft或AlignRight的对齐方式转换为带Align绝对的AlignLeft或AlignRight。其他对齐标志保持不变。 如果未指定水平对齐方式,则函数将返回给定布局方向的默认对齐方式。
[Static]visualPos(direction: PySide6.QtCore.Qt.LayoutDirection, boundingRect: PySide6.QtCore.QRect, logicalPos: PySide6.QtCore.QPoint) -> PySide6.QtCore.QPoint返回根据指定方向转换为屏幕坐标的给定逻辑位置。执行平移时使用boundingRectangle。
[Static]visualRect(direction: PySide6.QtCore.Qt.LayoutDirection, boundingRect: PySide6.QtCore.QRect, logicalRect: PySide6.QtCore.QRect) -> PySide6.QtCore.QRect返回根据指定方向转换为屏幕坐标的给定逻辑矩形。执行平移时使用boundingRectangle。 此函数用于支持从右到左的桌面,通常用于subControlRect函数的实现。
drawComplexControl(cc: PySide6.QtWidgets.QStyle.ComplexControl, opt: PySide6.QtWidgets.QStyleOptionComplex, p: PySide6.QtGui.QPainter, widget: Union[PySide6.QtWidgets.QWidget, NoneType] = None) -> None使用提供的具有选项指定的样式选项的绘制器绘制给定的控件。 小部件参数是可选的,可以用来帮助绘制控件。 option参数是指向QStyleOptionComplex对象的指针,该对象可以使用qstyleoption_cast函数强制转换为正确的子类。请注意,指定选项的rect成员必须在逻辑坐标中。在调用drawPrimitive或drawControl函数之前,此函数的重新实现应使用visualRect将逻辑坐标更改为屏幕坐标。 下表列出了复杂的控件元素及其关联的样式选项子类。样式选项包含绘制控件所需的所有参数,包括QStyleOption::state,它保存绘制时使用的样式标志。该表还描述了在将给定选项强制转换为适当的子类时设置的标志。
drawItemPixmap(painter: PySide6.QtGui.QPainter, rect: PySide6.QtCore.QRect, alignment: int, pixmap: Union[PySide6.QtGui.QPixmap, PySide6.QtGui.QImage, str]) -> None使用提供的绘制器,根据指定的对齐方式,在指定的矩形中绘制给定的像素图。
drawItemText(painter: PySide6.QtGui.QPainter, rect: PySide6.QtCore.QRect, flags: int, pal: Union[PySide6.QtGui.QPalette, PySide6.QtCore.Qt.GlobalColor, PySide6.QtGui.QColor], enabled: bool, text: str, textRole: PySide6.QtGui.QPalette.ColorRole = Instance(PySide6.QtGui.QPalette.NoRole)) -> None使用提供的画家和调色板在指定的矩形中绘制给定的文本。 文本是用画家的笔绘制的,并根据指定的对齐方式对齐和换行。如果指定了明确的textRole,则使用给定角色的调色板颜色绘制文本。enabled参数表示项目是否已启用;当重新实现此函数时,启用的参数应该会影响项目的绘制方式。
drawPrimitive(pe: PySide6.QtWidgets.QStyle.PrimitiveElement, opt: PySide6.QtWidgets.QStyleOption, p: PySide6.QtGui.QPainter, widget: Union[PySide6.QtWidgets.QWidget, NoneType] = None) -> None使用选项指定的样式选项,使用提供的绘制器绘制给定的基本元素。 小部件参数是可选的,并且可能包含一个小部件,该小部件可能有助于绘制基元。 下表列出了基本元素及其关联的样式选项子类。样式选项包含绘制元素所需的所有参数,包括QStyleOption::state,它保存绘制时使用的样式标志。该表还描述了在将给定选项强制转换为适当的子类时设置的标志。 请注意,如果这里没有列出基元元素,那是因为它使用了一个普通的QStyleOption对象。
generatedIconPixmap(iconMode: PySide6.QtGui.QIcon.Mode, pixmap: Union[PySide6.QtGui.QPixmap, PySide6.QtGui.QImage, str], opt: PySide6.QtWidgets.QStyleOption) -> PySide6.QtGui.QPixmap返回给定像素图的副本,其样式符合指定的iconMode,并考虑选项指定的调色板。 选项参数可以传递额外的信息,但它必须包含一个选项板。 请注意,并不是所有的像素图都符合,在这种情况下,返回的像素图是一个普通副本。
hitTestComplexControl(cc: PySide6.QtWidgets.QStyle.ComplexControl, opt: PySide6.QtWidgets.QStyleOptionComplex, pt: PySide6.QtCore.QPoint, widget: Union[PySide6.QtWidgets.QWidget, NoneType] = None) -> PySide6.QtWidgets.QStyle.SubControl返回给定复杂控件中给定位置的子控件使用选项指定的样式选项。 请注意,位置以屏幕坐标表示。 选项参数是指向QStyleOptionComplex对象或其子类之一的指针。可以使用qstyleoption_cast函数将对象强制转换为适当的类型。有关详细信息,请参见drawComplexControl。小部件参数是可选的,可以包含函数的附加信息。
itemPixmapRect(r: PySide6.QtCore.QRect, flags: int, pixmap: Union[PySide6.QtGui.QPixmap, PySide6.QtGui.QImage, str]) -> PySide6.QtCore.QRect返回给定矩形内的区域,根据定义的对齐方式在该区域中绘制指定的像素图。
itemTextRect(fm: PySide6.QtGui.QFontMetrics, r: PySide6.QtCore.QRect, flags: int, enabled: bool, text: str) -> PySide6.QtCore.QRect返回给定矩形中的区域,根据指定的字体度量和对齐方式在该区域中绘制所提供的文本。enabled参数指示关联项目是否已启用。 如果给定的矩形大于渲染文本所需的面积,则返回的矩形将根据指定的对齐方式在矩形内偏移。例如,如果对齐方式为AlignCenter,则返回的矩形将在矩形内居中。如果给定的矩形小于所需的面积,则返回的矩形将是最小的矩形,其大小足以渲染文本。
layoutSpacing(control1: PySide6.QtWidgets.QSizePolicy.ControlType, control2: PySide6.QtWidgets.QSizePolicy.ControlType, orientation: PySide6.QtCore.Qt.Orientation, option: Union[PySide6.QtWidgets.QStyleOption, NoneType] = None, widget: Union[PySide6.QtWidgets.QWidget, NoneType] = None) -> int返回布局中控件1和控件2之间应使用的间距。方向指定控件是并排放置还是垂直堆叠。option参数可用于传递有关父窗口小部件的额外信息。小部件参数是可选的,如果选项为None,也可以使用。 此函数由布局系统调用。仅当PM_LayoutHorizontalSpacing或PM_Layout VerticalSpacing返回负值时才使用。
pixelMetric(metric: PySide6.QtWidgets.QStyle.PixelMetric, option: Union[PySide6.QtWidgets.QStyleOption, NoneType] = None, widget: Union[PySide6.QtWidgets.QWidget, NoneType] = None) -> int返回给定像素度量的值。 指定的选项和小部件可以用于计算度量。通常,不使用小部件参数。可以使用qstyleoption_cast函数将该选项强制转换为适当的类型。请注意,即使PixelMetrics可以使用该选项,该选项也可能为零。有关适当的选项强制转换,请参阅下表: 见下方补充 一些像素度量是从窗口小部件中调用的,而一些仅由样式内部调用。如果度量不是由小部件调用的,则由样式作者自行决定是否使用它。对于某些样式,这可能不合适。
polish(application: PySide6.QtWidgets.QApplication) -> None polish(palette: Union[PySide6.QtGui.QPalette, PySide6.QtCore.Qt.GlobalColor, PySide6.QtGui.QColor]) -> None polish(widget: PySide6.QtWidgets.QWidget) -> None这是一个重载函数。给定应用程序对象的初始化延迟。 这是一个重载函数。给定应用程序对象的初始化延迟。 初始化给定小部件的外观。 在每个小部件完全创建之后,但就在第一次显示之前的某个时刻,都会为其调用此函数。 请注意,默认实现不执行任何操作。该函数中合理的操作可能是为小部件调用QWidget::setBackgroundMode函数。例如,不要使用该函数来设置几何图形。重新实现此功能提供了一个后门,通过它可以改变小部件的外观,但使用Qt风格的引擎,很少需要实现此功能;重新实现drawItemPixmap、drawItemText、drawPrimitive等。 inherits函数可以提供足够的信息来允许类特定的自定义。但是,由于新的QStyle子类预计可以合理地与所有当前和未来的小部件配合使用,因此建议有限地使用硬编码自定义。
sizeFromContents(ct: PySide6.QtWidgets.QStyle.ContentsType, opt: PySide6.QtWidgets.QStyleOption, contentsSize: PySide6.QtCore.QSize, w: Union[PySide6.QtWidgets.QWidget, NoneType] = None) -> PySide6.QtCore.QSize根据提供的内容size,返回指定选项和类型所描述的元素的大小。 option参数是指向QStyleOption或其子类之一的指针。可以使用qstyleoption_cast函数将该选项强制转换为适当的类型。小部件是一个可选参数,可以包含用于计算大小的额外信息。 有关适当的选项强制转换,请参见下表补充
standardIcon(standardIcon: PySide6.QtWidgets.QStyle.StandardPixmap, option: Union[PySide6.QtWidgets.QStyleOption, NoneType] = None, widget: Union[PySide6.QtWidgets.QWidget, NoneType] = None) -> PySide6.QtGui.QIcon返回给定标准图标的图标。 standardIcon是一个标准的像素图,它可以遵循一些现有的GUI样式或指南。选项参数可用于传递定义适当图标时所需的额外信息。小部件参数是可选的,也可以用来帮助确定图标。
standardPalette() -> PySide6.QtGui.QPalette返回样式的标准调色板。 请注意,在支持系统颜色的系统上,不使用样式的标准调色板。特别是,Windows Vista和Mac风格不使用标准调色板,而是使用本地主题引擎。对于这些样式,您不应该使用setPalette设置调色板。
standardPixmap(standardPixmap: PySide6.QtWidgets.QStyle.StandardPixmap, opt: Union[PySide6.QtWidgets.QStyleOption, NoneType] = None, widget: Union[PySide6.QtWidgets.QWidget, NoneType] = None) -> PySide6.QtGui.QPixmap返回给定标准像素映射的像素映射。 标准像素图是一种可以遵循某些现有GUI样式或指导原则的像素图。选项参数可用于传递定义适当的像素图时所需的额外信息。小部件参数是可选的,也可以用来帮助确定像素图。 调用standardPixmap的开发人员应改为调用standardIcon重新实现standardPixmap的开发人员应该改为重新实现standardIcon。
styleHint(stylehint: PySide6.QtWidgets.QStyle.StyleHint, opt: Union[PySide6.QtWidgets.QStyleOption, NoneType] = None, widget: Union[PySide6.QtWidgets.QWidget, NoneType] = None, returnData: Union[PySide6.QtWidgets.QStyleHintReturn, NoneType] = None) -> int返回一个整数,表示所提供的样式选项所描述的给定小部件的指定样式提示。 returnData用于查询小部件需要比styleHint返回的整数更详细的数据时。有关详细信息,请参阅QStyleHintReturn类描述。
subControlRect(cc: PySide6.QtWidgets.QStyle.ComplexControl, opt: PySide6.QtWidgets.QStyleOptionComplex, sc: PySide6.QtWidgets.QStyle.SubControl, widget: Union[PySide6.QtWidgets.QWidget, NoneType] = None) -> PySide6.QtCore.QRect返回包含给定复杂控件的指定子控件的矩形使用选项指定的样式。矩形是在屏幕坐标中定义的。 选项参数是指向QStyleOptionComplex或其子类之一的指针,可以使用qstyleoption_cast函数将其强制转换为适当的类型。有关详细信息,请参见drawComplexControl。该小部件是可选的,可以包含该功能的附加信息。
subElementRect(subElement: PySide6.QtWidgets.QStyle.SubElement, option: PySide6.QtWidgets.QStyleOption, widget: Union[PySide6.QtWidgets.QWidget, NoneType] = None) -> PySide6.QtCore.QRect返回给定元素的子区域,如所提供的样式选项中所述。返回的矩形是在屏幕坐标中定义的。 小部件参数是可选的,可以用来帮助确定区域。可以使用QStyleOption_cast函数将QStyleOption对象强制转换为适当的类型。有关适当的选项强制转换,请参见下表:
unpolish(application: PySide6.QtWidgets.QApplication) -> None unpolish(widget: PySide6.QtWidgets.QWidget) -> None这是一个重载函数。取消初始化给定的应用程序。 取消初始化给定小部件的外观。 此函数是polish的对应函数。每当风格发生动态变化时,每个经过抛光的小部件都会调用它;前一种风格必须先不修饰其设置,然后新的风格才能再次修饰它们。 请注意,只有在小部件被销毁时才会调用unpublish。在某些情况下,这可能会导致问题,例如,如果您从UI中删除小部件,缓存它,然后在样式更改后重新插入它;Qt的一些类缓存它们的小部件。
drawComplexControl
复杂控制QstyleOptionComplex子类样式标志描述
CC_SpinBoxQStyleOptionSpinBoxState_Enabled如果启用了数字调整框,则进行设置。
CC_SpinBoxQStyleOptionSpinBoxState_HasFocus设置旋转框是否具有输入焦点。
CC_ComboBoxQStyleOptionComboBoxState_Enabled如果组合框已启用,则进行设置。
CC_ComboBoxQStyleOptionComboBoxState_HasFocus如果组合框具有输入焦点,则进行设置。
CC_ScrollBarQStyleOptionSliderState_Enabled如果滚动条已启用,则进行设置。
CC_ScrollBarQStyleOptionSliderState_HasFocus如果滚动条具有输入焦点,则进行设置。
CC_SliderQStyleOptionSliderState_Enabled如果滑块已启用,则进行设置。
CC_SliderQStyleOptionSliderState_HasFocus设置滑块是否具有输入焦点。
CC_DialQStyleOptionSliderState_Enabled如果已启用拨号,则进行设置。
CC_DialQStyleOptionSliderState_HasFocus如果表盘有输入焦点,则进行设置。
CC_ToolButtonQStyleOptionToolButtonState_Enabled如果启用了工具按钮,则进行设置。
CC_ToolButtonQStyleOptionToolButtonState_HasFocus设置工具按钮是否具有输入焦点。
CC_ToolButtonQStyleOptionToolButtonState_DownArrow如果工具按钮按下即按下鼠标按钮或空格键,则进行设置。
CC_ToolButtonQStyleOptionToolButtonState_On如果工具按钮是切换按钮并处于打开状态,则进行设置。
CC_ToolButtonQStyleOptionToolButtonState_AutoRaise如果工具按钮已启用自动提升,则进行设置。
CC_ToolButtonQStyleOptionToolButtonState_Raised如果启用自动抬起时按钮未按下、未打开且不包含鼠标,则进行设置。
CC_TitleBarQStyleOptionTitleBarState_Enabled如果标题栏已启用,则进行设置。
drawPrimitive
基本元素QStyleOption子类样式标志描述
PE_FrameFocusRectQStyleOptionFocusRectState_FocusAtBorder焦点是在边界还是在小部件内部。
PE_IndicatorCheckBoxQStyleOptionButtonState_NoChange表示"三态"复选框。
PE_IndicatorCheckBoxQStyleOptionButtonState_On表示已检查指示器。
PE_IndicatorRadioButtonQStyleOptionButtonState_On指示已选择单选按钮。
State_NoChangeIndicates a “tri-state” controller.State_On指示已选择单选按钮。
State_EnabledIndicates the controller is enabled.State_On指示已选择单选按钮。
PE_IndicatorBranchQStyleOptionState_Children指示应绘制用于展开树以显示子项的控件。
PE_IndicatorBranchQStyleOptionState_Item指示应绘制一个水平分支用于显示子项。
PE_IndicatorBranchQStyleOptionState_Open指示树状分支已展开。
PE_IndicatorBranchQStyleOptionState_Sibling指示应绘制一条垂直线用于显示同级项目。
PE_IndicatorHeaderArrowQStyleOptionHeaderState_UpArrow表示应向上绘制箭头;否则它应该会掉下来。
PE_FrameGroupBox , PE_Frame , PE_FrameLineEdit , PE_FrameMenu , PE_FrameDockWidget , PE_FrameWindowQStyleOptionFrameState_Sunken指示框架应凹陷。
PE_IndicatorToolBarHandleQStyleOptionState_Horizontal指示窗口句柄是水平的,而不是垂直的。
PE_IndicatorSpinPlus , PE_IndicatorSpinMinus , PE_IndicatorSpinUp , PE_IndicatorSpinDown ,QStyleOptionSpinBoxState_Sunken表示按钮已按下。
PE_PanelButtonCommandQStyleOptionButtonState_Enabled如果按钮已启用,则进行设置。
PE_PanelButtonCommandQStyleOptionButtonState_HasFocus如果按钮具有输入焦点,则进行设置。
PE_PanelButtonCommandQStyleOptionButtonState_Raised如果按钮未按下、未打开和未平放,则进行设置。
PE_PanelButtonCommandQStyleOptionButtonState_On如果该按钮是切换按钮并处于打开状态,则进行设置。
PE_PanelButtonCommandQStyleOptionButtonState_Sunken设置按钮是否按下即,按下按钮上的鼠标按钮或空格键。
pixelMetric
像素度量QStyleOption子类
PM_SliderControlThicknessQStyleOptionSlider
PM_SliderLengthQStyleOptionSlider
PM_SliderTickmarkOffsetQStyleOptionSlider
PM_SliderSpaceAvailableQStyleOptionSlider
PM_ScrollBarExtentQStyleOptionSlider
PM_TabBarTabOverlapQStyleOptionTab
PM_TabBarTabHSpaceQStyleOptionTab
PM_TabBarTabVSpaceQStyleOptionTab
PM_TabBarBaseHeightQStyleOptionTab
PM_TabBarBaseOverlapQStyleOptionTab
sizeFromContents
Contents TypeQStyleOption子类
CT_CheckBoxQStyleOptionButton
CT_ComboBoxQStyleOptionComboBox
CT_GroupBoxQStyleOptionGroupBox
CT_HeaderSectionQStyleOptionHeader
CT_ItemViewItemQStyleOptionViewItem
CT_LineEditQStyleOptionFrame
CT_MdiControlsQStyleOptionComplex
CT_MenuQStyleOption
CT_MenuItemQStyleOptionMenuItem
CT_MenuBarQStyleOptionMenuItem
CT_MenuBarItemQStyleOptionMenuItem
CT_ProgressBarQStyleOptionProgressBar
CT_PushButtonQStyleOptionButton
CT_RadioButtonQStyleOptionButton
CT_ScrollBarQStyleOptionSlider
CT_SizeGripQStyleOption
CT_SliderQStyleOptionSlider
CT_SpinBoxQStyleOptionSpinBox
CT_SplitterQStyleOption
CT_TabBarTabQStyleOptionTab
CT_TabWidgetQStyleOptionTabWidgetFrame
CT_ToolButtonQStyleOptionToolButton
subElementRect
子元素QStyleOption子类
SE_PushButtonContentsQStyleOptionButton
SE_PushButtonFocusRectQStyleOptionButton
SE_PushButtonBevelQStyleOptionButton
SE_CheckBoxIndicatorQStyleOptionButton
SE_CheckBoxContentsQStyleOptionButton
SE_CheckBoxFocusRectQStyleOptionButton
SE_RadioButtonIndicatorQStyleOptionButton
SE_RadioButtonContentsQStyleOptionButton
SE_RadioButtonFocusRectQStyleOptionButton
SE_ComboBoxFocusRectQStyleOptionComboBox
SE_ProgressBarGrooveQStyleOptionProgressBar
SE_ProgressBarContentsQStyleOptionProgressBar
SE_ProgressBarLabelQStyleOptionProgressBar

示例

import sys
from PySide6.QtWidgets import QApplication,QWidget,QVBoxLayout,QStyleFactory,QPushButton,QComboBox,QSpinBox


class MyWindow(QWidget):
    def __init__(self,parent=None):
        super().__init__(parent)
        self.setupJi()

    def setupJi(self):
        v=QVBoxLayout(self)
        self.comb=QComboBox()
        self.spinBox=QSpinBox()

        self.pushButton=QPushButton("Close")

        v.addWidget(self.comb)
        v.addWidget(self.spinBox)
        v.addWidget(self.pushButton)

        self.comb.addItems(QStyleFactory.keys())# 将风格名称添加到下拉列表中

        self.pushButton.clicked.connect(self.close)


class MyApplication(QApplication):
    def __init__(self,argv):
        super().__init__(argv)

        window=MyWindow()# 创建窗口
        style=QStyleFactory.create(window.comb.currentText())# 创建风格

        self.setStyle(style)# 设置初始风格
        window.comb.currentTextChanged.connect(self.reSetStyle)# 信号与槽的连接
        window.show()

        sys.exit(self.exec())

    def reSetStyle(self,new_style):  # 槽函数
        style=QStyleFactory.create(new_style)# 创建新风格
        self.setStyle(style)# 设置新风格
        print("当前风格是:",new_style)# 输出当前的风格


if __name__=='__main__':
    app=MyApplication(sys.argv)

Qss官方文档

Customizing Qt Widgets Using Style Sheets

Qt Style Sheets Reference

官方参考文档才是最官方全面的文档,有时间最好仔细阅读一下。

主要包括:

  • 可应用样式表的控件列表
  • 属性列表
  • 图标列表
  • 属性值列表
  • 伪类选择器列表
  • 子控件控制列表

内容非常多,在此就不展开了。

可设置样式小部件列表

下表列出了可以使用样式表自定义的Qt小部件:

小部件说明
QAbstractScrollArea支持盒子模型。
QAbstractScrollArea的所有衍生产品,包括QTextEdit和QAbstractItemView(所有项目视图类),都支持使用背景附件的可滚动背景。将背景附件设置为固定会提供不随视口滚动的背景图像。将背景附件设置为滚动,当滚动条移动时滚动背景图像。

有关示例,请参阅自定义QAbstractScrollArea。
QCheckBox支持框模型。可以使用::指示符子控件设置检查指示符的样式。默认情况下,指示符放置在小部件的Contents矩形的左上角。
行间距属性指定检查指示符和文本之间的行间距。

有关示例,请参阅自定义QCheckBox。
QColumnView可以使用图像属性设置手柄样式。箭头指示器可以使用::左箭头子控件和::右箭头子控件设置样式。
QComboBox组合框周围的框架可以使用框模型设置样式。下拉按钮可以使用::drop-down子控件设置样式。默认情况下,下拉按钮放置在小部件填充矩形的右上角。下拉按钮内的箭头标记可以使用::d自己的箭头子控件设置样式。默认情况下,箭头放置在下拉子控件的内容矩形的中心。
可以使用占位符-文本-颜色属性设置占位符文本的颜色。

有关示例,请参阅自定义QComboBox。
QDateEdit请参阅QSpinBox。
QDateTimeEdit请参阅QSpinBox。
QDialog仅支持background、backder-clip和backder-source属性。
警告:确保为自定义小部件定义Q_OBJECT宏。
QDialogButtonBox可以使用按钮布局属性更改按钮的布局。
QDockWidget停靠时支持标题栏和标题栏按钮的样式。
停靠小部件边框可以使用边框属性设置样式。::标题子控件可用于自定义标题栏。关闭和浮动按钮分别使用::c失去按钮和::float按钮相对于::标题子控件定位。

当标题栏垂直时,设置:垂直伪类。此外,根据QDockWidget::DockWidgetFeature,设置:可关闭、可浮动和可移动的伪状态。
注意:使用QMainWindow::分隔符设置调整大小手柄的样式。
警告:当QDockWidget取消停靠时,样式表无效,因为Qt在取消停靠时使用本机顶级窗口。
有关示例,请参阅自定义QDockWidget。
QDoubleSpinBox请参阅QSpinBox。
QFrame支持盒子模型。
从4.3开始,在QLabel上设置样式表会自动将QFrame::frameStyle属性设置为QFrame::StyledPanel。

有关示例,请参阅自定义QFrame。
QGroupBox支持框模型。标题可以使用::标题子控件设置样式。默认情况下,标题的放置取决于QGroupBox::文本对齐。
对于可检查的QGroupBox,标题包含检查指示符。指示符使用::指示符子控件设置样式。行间距属性可用于控制文本和指示符之间的行间距。

有关示例,请参阅自定义QGroupBox。
QHeaderView支持框模型。标题视图的各部分使用::节子控件设置样式。节子控件支持:中间、第一、最后、唯一一、下一个选定、上一个选定、选定和选中的伪状态。
排序指示符可以使用::向上箭头和::d自己的箭头子控件设置样式。

有关示例,请参阅自定义QHeaderView。
QLabel支持盒子模型。不支持:悬停伪状态。
从4.3开始,在QLabel上设置样式表会自动将QFrame::frameStyle属性设置为QFrame::StyledPanel。

有关示例,请参阅自定义QFrame(QLabel派生自QFrame)。
QLineEdit支持盒子模型。
所选项目的颜色和背景分别使用选择颜色和选择背景颜色设置样式。

可以使用占位符-文本-颜色属性设置占位符文本的颜色。

密码字符可以使用lineeitt-passve-字符属性设置样式。

密码掩码延迟可以使用lineedit密码掩码延迟更改

有关示例,请参阅自定义QLineEdit。
QListWidget请参见QListView。
QMainWindow支持分隔符的样式
使用QDockWidget时,QMainWindow中的分隔符使用::分隔符子控件设置样式。

有关示例,请参阅自定义QMainWindow。
QMenu支持盒子模型。
使用::项目子控件设置单个项目的样式。除了通常支持的伪状态之外,项目子控件还支持:选择、:默认、:独占和非独占伪状态。

可检查菜单项的指示符使用::指示符子控件设置样式。

分隔符使用::分隔符子控件设置样式。

对于具有子菜单的项目,箭头标记使用右箭头和左箭头设置样式。

滚动条使用::滚动条设置样式。

撕开的样式使用::撕开。

有关示例,请参阅自定义QMenu。
QMenuBar支持框模型。行间距属性指定菜单项之间的行间距。单个项使用::项子控件设置样式。
警告:在Qt/Mac上运行时,菜单栏通常嵌入到系统范围的菜单栏中。在这种情况下,样式表将无效。

有关示例,请参阅自定义QMenuBar。
QMessageBox消息框-文本-交互-标志属性可用于更改与消息框中文本的交互。
QProgressBar支持框模型。进度条的块可以使用::c大块子控件设置样式。块显示在小部件的内容矩形上。
如果进度条显示文本,请使用text-对齐属性来定位文本。

不确定进度条具有:不确定伪状态集。

有关示例,请参阅自定义QProgressBar。
QPushButton支持盒子模型。支持: default,:持平,:选中的伪状态。
从5.15开始,图标属性可以设置为覆盖按钮图标。

对于带有菜单的QPushButton,菜单指示器使用::菜单指示器子控件设置样式。可以使用:打开和:关闭伪状态自定义可检查按钮的外观。

警告:如果您只在QPushButton上设置背景颜色,除非您将边框属性设置为某个值,否则背景可能不会出现。这是因为默认情况下,QPushButton绘制的本机边框与背景颜色完全重叠。例如,
QRadioButton支持框模型。可以使用::指示符子控件设置检查指示符的样式。默认情况下,指示符放置在小部件的Contents矩形的左上角。
行间距属性指定检查指示符和文本之间的行间距。

有关示例,请参阅自定义QRadioButton。
QScrollBar支持框模型。小部件的Contents矩形被认为是滑块移动的凹槽。QScrollBar的范围(即宽度或高度,取决于方向)分别使用宽度或高度属性设置。要确定方向,请使用:水平和:垂直伪状态。
滑块可以使用::手柄子控件设置样式。设置最小宽度或最小高度根据方向为滑块提供大小约束。

::add子控件可用于设置按钮样式以添加行。默认情况下,添加行子控件放置在小部件边框矩形的右上角。根据方向,::右箭头或::d自己的箭头。默认情况下,箭头放置在添加行子控件的Contents矩形的中心。

::子行子控件可用于设置按钮样式以减去线条。默认情况下,子行子控件放置在小部件边框矩形的右下角。根据方向,::左箭头或::向上箭头。默认情况下,箭头放置在子行子控件的Contents矩形的中心。

::子页面子控件可用于设置减去页面的滑块区域的样式。::add页子控件可用于设置添加页面的滑块区域的样式。

有关示例,请参阅自定义QScrollBar。
QSizeGrip支持宽度、高度和图像属性。
有关示例,请参阅自定义QSizeGrip。
QSlider支持盒子模型。对于水平滑块,必须提供最小宽度和高度属性。对于垂直滑块,必须提供最小高度和宽度属性。
滑块的凹槽使用::凹槽设置样式。凹槽默认位于小部件的Contents矩形中。滑块的拇指使用::手柄子控件设置样式。子控件在凹槽子控件的Contents矩形中移动。

有关示例,请参阅自定义QSlider。
QSpinBox旋转框的框架可以使用框模型设置样式。
向上按钮和箭头可以使用::向上按钮和::向上箭头子控件设置样式。默认情况下,向上按钮位于小部件填充矩形的右上角。如果没有明确的大小,它将占据其参考矩形高度的一半。向上箭头位于向上按钮的内容矩形的中心。

向下按钮和箭头可以使用::d自己的按钮和::d自己的箭头子控件设置样式。默认情况下,向下按钮放置在小部件填充矩形的右下角。如果没有明确的大小,它占据其参考矩形高度的一半。底部箭头放置在底部按钮的内容矩形的中心。

有关示例,请参阅自定义QSpinBox。
QSplitter支持盒子模型。拆分器的句柄使用::句柄子控件设置样式。
有关示例,请参阅自定义QSplitter。
QStatusBar仅支持背景属性。单个项目的框架可以使用::项目子控件设置样式。
有关示例,请参阅自定义QStatusBar。
QTabBar可以使用::选项卡子控件设置单个选项卡的样式。使用::c关闭按钮选项卡支持: only-one,:first,:last,:mid,:prever-选定,:next-选定,:选定的伪状态。
根据选项卡的方向,顶部、左侧、右侧、底部的伪状态。

通过使用负边距或使用绝对位置方案为所选状态创建重叠选项卡。

QTabBar的撕裂指示器使用::撕裂子控件设置样式。

QTabBar使用两个QToolButton作为其滚动器,可以使用QTabBar QToolButton选择器设置样式。要指定滚动按钮的宽度,请使用::滚动子控件。

QTabBar中选项卡的对齐方式使用对齐属性设置样式。

要更改QTabBar在QTabWidget中的位置,请使用tab-bar子控件(并设置子控件位置)。

有关示例,请参阅自定义QTabBar。
QTabWidget选项卡小部件的框架使用::窗格子控件设置样式。左角和右角分别使用::左角和::右角设置样式。选项卡栏的位置使用::选项卡栏子控件控制。
默认情况下,子控件在QWindowsStyle中具有QTabWidget的位置。要将QTabBar放在中间,请设置选项卡栏子控件的子控件位置。

根据选项卡的方向,顶部、左侧、右侧、底部的伪状态。

有关示例,请参阅自定义QTabWidget。
QTableView支持框模型。启用交替行颜色后,可以使用备用背景颜色属性设置交替颜色的样式。
所选项目的颜色和背景分别使用选择颜色和选择背景颜色设置样式。

QTableView中的角小部件实现为QAbstractButton,可以使用“QTableView QTableCornerButton::部分”选择器设置样式。

警告:如果您只在QTableCornerButton上设置背景颜色,除非您将边框属性设置为某个值,否则背景可能不会出现。这是因为默认情况下,QTableCornerButton绘制的本机边框与背景颜色完全重叠。

可以使用grdline-color属性指定网格的颜色。

请参阅QAbsractScrollArea来设置可滚动背景的样式。

有关示例,请参阅自定义QTableView。
QTableWidget请参见QTableView。
QTextEdit支持盒子模型。
选定文本的颜色和背景分别使用选择颜色和选择背景颜色设置样式。

可以使用占位符-文本-颜色属性设置占位符文本的颜色。

请参阅QAbsractScrollArea来设置可滚动背景的样式。
QTimeEdit请参阅QSpinBox。
QToolBar支持盒子模型。
根据工具栏分组的区域,顶部、左侧、右侧、底部的伪状态。

第一个,最后一个,中间,只有一个伪状态指示工具栏在线组中的位置(请参阅QStyleOptionToolBar::的位置。

QToolBar的分隔符使用::分隔符子控件设置样式。

手柄(用于移动工具栏)使用::手柄子控件设置样式。

有关示例,请参阅自定义QToolBar。
QToolButton支持盒子模型。
如果QToolButton有一个菜单,::菜单指示器子控件可用于设置指示器的样式。默认情况下,菜单指示器位于小部件填充矩形的右下角。

如果QToolButton处于QToolButton::MenuButtonPopup模式,则::菜单按钮子控件用于绘制菜单按钮。::菜单箭头子控件用于绘制菜单按钮内部的菜单箭头。默认情况下,它位于菜单按钮子控件的Contents矩形的中心。

当QToolButton显示箭头时,使用::向上箭头、::d自己的箭头、::左箭头和::右箭头子控件。

警告:如果您只在QToolButton上设置背景颜色,除非您将边框属性设置为某个值,否则不会显示背景。这是因为默认情况下,QToolButton绘制的本机边框与背景颜色完全重叠。
有关示例,请参阅自定义QToolButton。
QToolBox支持盒子模型。
各个选项卡可以使用::选项卡子控件设置样式。这些选项卡支持: only-one、:first、:last、:中间、:prever-选择、:next-选择、:选择的伪状态。
QToolTip支持盒子模型。不透明度属性控制工具提示的不透明度。
有关示例,请参阅自定义QFrame(QToolTip是QFrame)。
QTreeView支持框模型。启用交替行颜色后,可以使用备用背景颜色属性设置交替颜色的样式。
所选项目的颜色和背景分别使用选择颜色和选择背景颜色设置样式。

选择行为由展示-装饰-选择属性控制。

树视图的分支可以使用::branch子控件设置样式。::branch子控件支持: open、:off、:has-sible和:has-child伪状态。

使用::项目子控件对QTreeView中的项目进行更细粒度的控制。

请参阅QAbsractScrollArea来设置可滚动背景的样式。

有关设置分支样式的示例,请参阅自定义QTreeView。
QTreeWidget请参阅QTreeView。
QWidget仅支持background、backder-clip和backder-source属性。
如果您从QWidget子类化,则需要为您的自定义QWidget提供一个绘制事件
警告:确保为自定义小部件定义Q_OBJECT宏。

属性表

下表列出了Qt样式表支持的所有属性。可以为属性赋予哪些值取决于属性的类型。除非另有说明,否则以下属性适用于所有小部件。标有星号*的属性特定于Qt,在CSS2或CSS3中没有等效项。

属性类型说明
alternate-background-colorBrushQAbstractItemView子类中使用的替代背景颜色。
如果未设置此属性,则默认值为为调色板的AlternateBase角色设置的任何内容。
另请参阅背景和选择背景颜色。
backgroundBackground用于设置背景的速记符号。相当于指定背景颜色、背景图像、背景重复和/或背景位置。
QAbstractItemView子类、QAbstractSpinBox子类、QCheckBox、QComboBox、QDialog、QFrame、QGroupBox、QLabel、QLineEdit、QMenu、QMenuBar、QPushButton、QRadioButton、QSplitter、QTextEdit、QToolTip和普通QWidgets支持此属性。

通常,需要设置类似于Qt::BrushStyle中样式的填充模式。您可以使用Qt::SolidPattern、Qt::RadialGRadientPattern、Qt::LinearGRadientPattern和Qt::ConicalGRadientPattern的背景颜色属性。其他模式可以通过创建包含该模式的背景图像轻松实现。
另请参阅background-origin, selection-background-color, background-clip, background-attachment and alternate-background-color
background-colorBrush用于小部件的背景颜色。
background-imageUrl用于小部件的背景图像。图像的半透明部分让背景颜色闪闪发光。
background-repeatRepeat是否以及如何重复背景图像以填充背景原点矩形。
如果未指定此属性,则在两个方向重复背景图像(重复)。
background-positionAlignment背景原点矩形内背景图像的对齐方式。
如果未指定此属性,则对齐方式为左上角。
background-attachmentAttachment确定QAbstractScrollArea中的背景图像是相对于视口滚动还是固定。默认情况下,背景图像随视口滚动。
另见背景background
background-clipOrigin小部件的矩形,其中绘制了背景。
此属性指定背景颜色和背景图像剪辑到的矩形。

QAbstractItemView子类、QAbstractSpinBox子类、QCheckBox、QComboBox、QDialog、QFrame、QGroupBox、QLabel、QPushButton、QRadioButton、QSplitter、QTextEdit、QToolTip和普通QWidgets支持此属性。

如果未指定此属性,则默认为边框。
background-originOrigin小部件的背景矩形,与背景位置和背景图像结合使用。
QAbstractItemView子类、QAbstractSpinBox子类、QCheckBox、QComboBox、QDialog、QFrame、QGroupBox、QLabel、QPushButton、QRadioButton、QSplitter、QTextEdit、QToolTip和普通QWidgets支持此属性。

如果未指定此属性,则默认为填充。另请参阅background and The Box Model.背景和盒子模型。
borderBorder用于设置小部件边框的速记符号。相当于指定边框颜色、边框样式和/或边框宽度。
QAbstractItemView子类、QAbstractSpinBox子类、QCheckBox、QComboBox、QFrame、QGroupBox、QLabel、QLineEdit、QMenu、QMenuBar、QPushButton、QRadioButton、QSplitter、QTextEdit、QToolTip和普通QWidgets支持此属性。
border-topBorder用于设置小部件顶部边框的速记符号。等效于指定边框-顶部-颜色、边框-顶部-样式和/或边框-顶部-宽度。
border-rightBorder用于设置小部件右边框的速记符号。相当于指定边框右颜色、边框右样式和/或边框右宽度。
border-bottomBorder用于设置小部件底部边框的速记符号。相当于指定border-bod-color、border-bod-style和/或border-bod-wide。
border-leftBorder用于设置小部件左边框的速记符号。相当于指定边框左颜色、边框左样式和/或边框左宽度。
border-colorBox Colors所有边框边缘的颜色。等效于指定边框-顶部-颜色、边框-右侧-颜色、边框-底部-颜色和边框-左侧-颜色。
QAbstractItemView子类、QAbstractSpinBox子类、QCheckBox、QComboBox、QFrame、QGroupBox、QLabel、QLineEdit、QMenu、QMenuBar、QPushButton、QRadioButton、QSplitter、QTextEdit、QToolTip和普通QWidgets支持此属性。

如果未指定此属性,则默认为color(即小部件的前景色)。另请参阅边框样式、边框宽度、边框图像和框模型。
border-top-colorBrush边框顶部边缘的颜色。
border-right-colorBrush边框右边缘的颜色。
border-bottom-colorBrush边框底部边缘的颜色。
border-left-colorBrush边框左边缘的颜色。
border-imageBorder Image用于填充边框的图像。图像被切割成九个部分,必要时适当拉伸。有关详细信息,请参阅边框图像。
QAbstractItemView子类、QAbstractSpinBox子类、QCheckBox、QComboBox、QFrame、QGroupBox、QLabel、QLineEdit、QMenu、QMenuBar、QPushButton、QRadioButton、QSplitter、QTextEdit和QToolTip支持此属性。

另请参阅边框颜色、边框样式、边框宽度和框模型。
border-radiusRadius边框角的半径。等效于指定边框-顶部-左侧-半径、边框-顶部-右侧-半径、边框-底部-右侧-半径和边框-底部-左侧-半径。
边框半径剪辑元素的背景。

QAbstractItemView子类、QAbstractSpinBox子类、QCheckBox、QComboBox、QFrame、QGroupBox、QLabel、QLineEdit、QMenu、QMenuBar、QPushButton、QRadioButton、QSplitter、QTextEdit和QToolTip支持此属性。

如果未指定此属性,则默认为0。
另请参阅边框宽度和框模型。
border-top-left-radiusRadius边框左上角的半径。
border-top-right-radiusRadius边界右上角的半径。
border-bottom-right-radiusRadius边框右下角的半径。将此属性设置为正值会导致圆角。
border-bottom-left-radiusRadius边框左下角的半径。将此属性设置为正值会导致圆角。
border-styleBorder Style所有边框边缘的样式。
QAbstractItemView子类、QAbstractSpinBox子类、QCheckBox、QComboBox、QFrame、QGroupBox、QLabel、QLineEdit、QMenu、QMenuBar、QPushButton、QRadioButton、QSplitter、QTextEdit和QToolTip支持此属性。

如果未指定此属性,则默认为无。另请参阅边框颜色、边框样式、边框图像和框模型。 border-color, border-style, border-image, and The Box Model.
border-top-styleBorder Style边框顶部边缘的样式。
border-right-styleBorder Style边框右边缘的样式
border-bottom-styleBorder Style边框底部边缘的样式。
border-left-styleBorder Style边框左边缘的样式。
border-widthBox Lengths边框的宽度。相当于设置边框-顶部-宽度、边框-右侧-宽度、边框-底部-宽度和边框-左侧-宽度。
QAbstractItemView子类、QAbstractSpinBox子类、QCheckBox、QComboBox、QFrame、QGroupBox、QLabel、QLineEdit、QMenu、QMenuBar、QPushButton、QRadioButton、QSplitter、QTextEdit和QToolTip支持此属性。
参考 border-color, border-radius, border-style, border-image, and The Box Model.
border-top-widthLength边框上边缘的宽度。
border-right-widthLength边框右边缘的宽度。
border-bottom-widthLength边框底部边缘的宽度。
border-left-widthLength边框左边缘的宽度。
bottomLength如果位置是相对的(默认值),则将子控件向上移动一定的偏移量;指定底部:y等效于指定顶部:-y。
如果位置是绝对的,则底部属性指定子控件的底部边缘相对于父控件的底部边缘(另请参阅子控件原点)。
另请参阅左、右和顶部。
button-layoutNumberQDialogButtonBox或QMessageBox中按钮的布局。可能的值为0(WinLayout)、1(MacLayout)、2(KdeLayout)、3(GnomeLayout)和5(AndroidLayout)。
如果未指定此属性,则默认为当前样式为SH_DialogButtonLayout样式提示指定的值。
colorBrush用于呈现文本的颜色。
所有尊重QWidget::面板的小部件都支持此属性。

如果未设置此属性,则默认为在小部件的调色板中为QWidget::foreground Role设置的任何内容(通常为黑色)。
另请参阅背景和选择颜色。
dialogbuttonbox-buttons-have-iconsBooleanQDialogButtonBox中的按钮是否显示图标
如果此属性设置为1,QDialogButtonBox的按钮会显示图标;如果设置为0,则不会显示图标。

有关如何设置图标的信息,请参阅图标列表部分。
注意:定义此属性的样式必须在创建QDialogButtonBox之前应用;这意味着您必须将样式应用到父小部件或应用程序本身。
fontfont用于设置文本字体的速记符号。相当于指定字体系列、字体大小、字体样式和/或字体权重。
所有尊重QWidget::f的小部件都支持此属性。

如果未设置此属性,则默认为QWidget::font。
font-familyString字体家族。
font-sizeFont Size字体大小。在此版本的Qt中,仅支持pt和px指标。
font-styleFont Style字体样式。
font-weightFont Weight字体的重量。
gridline-color*ColorQTableView中网格线的颜色。
如果未指定此属性,则默认为当前样式为SH_Table_GridLineColor样式提示指定的值。
heightLength子控件(或在某些情况下,小部件)的高度。
如果未指定此属性,则默认为取决于子控件/小部件和当前样式的值。
警告:除非另有说明,否则此属性在小部件上设置时无效。如果您想要具有固定高度的小部件,请将min-Hei和max-Hei设置为相同的值。
iconUrl+用于具有图标的小部件的图标。
当前唯一支持此属性的小部件是QPushButton。
注意:将图标分配给按钮是应用程序的责任(使用QAbstractButton API),而不是样式的责任。因此,除非您的样式表针对特定应用程序,否则请小心设置它。
icon-sizeLength小部件中图标的宽度和高度。
可以使用此属性设置以下小部件的图标大小。
QCheckBox
QListView
QPushButton
QRadioButton
QTabBar
QToolBar
QToolBox
QTreeView
image*Url+在子控件的内容矩形中绘制的图像。
image属性接受URL列表或svg。绘制的实际图像是使用与QIcon相同的算法确定的(即图像永远不会放大,但在必要时总是缩小。如果指定了svg,则图像将缩放到内容矩形的大小。

在子控件上设置图像属性会隐式设置子控件的宽度和高度(除非SVG中的图像)。

在Qt 4.3及更高版本中,可以使用图像位置指定矩形内图像的对齐方式。

此属性仅用于子控件-我们不支持它用于其他元素。

警告:渲染SVG图像需要QIcon SVG插件。
image-positionalignment在Qt 4.3和更高版本中,可以使用相对或绝对位置来指定图像图像位置的对齐。
leftLength如果位置是相对的(默认值),则将子控件向右移动一定的偏移量。
如果位置是绝对的,则左属性指定子控件相对于父控件的左边缘的左边缘(另请参阅子控件原点)。

如果未指定此属性,则默认为0。
另请参阅右侧、顶部和底部。
lineedit-password-character*NumberQLineEdit密码字符作为Unicode编号。
如果未指定此属性,则默认为当前样式为SH_LineEdit_PasswordCharacter样式提示指定的值。
lineedit-password-mask-delay*NumberQLineEdit密码掩码延迟(以毫秒为单位),然后将lineedit密码字符应用于可见字符。
如果未指定此属性,则默认为当前样式为SH_LineEdit_PasswordMaskDelay样式提示指定的值。

此属性是在Qt 5.4中添加的。
marginBox Lengths小部件的边距。等效于指定边距-顶部、边距-右侧、边距-底部和边距-左侧。
QAbstractItemView子类、QAbstractSpinBox子类、QCheckBox、QComboBox、QFrame、QGroupBox、QLabel、QLineEdit、QMenu、QMenuBar、QPushButton、QRadioButton、QSplitter、QTextEdit和QToolTip支持此属性。

如果未指定此属性,则默认为0。
margin-topLength小部件的上边距。
margin-rightLength小部件的右边距。
margin-bottomLength小部件的底部边距。
margin-leftLength小部件的左边距。
max-heightLength小部件或子控件的最大高度。
QAbstractItemView子类、QAbstractSpinBox子类、QCheckBox、QComboBox、QFrame、QGroupBox、QLabel、QLineEdit、QMenu、QMenuBar、QPushButton、QRadioButton、QSizeGrip、QSpinBox、QSplitter、QStatusBar、QTextEdit和QToolTip支持此属性。

该值相对于框模型中的内容。
另请参阅最大宽度。
max-widthLength小部件或子控件的最大宽度。
QAbstractItemView子类、QAbstractSpinBox子类、QCheckBox、QComboBox、QFrame、QGroupBox、QLabel、QLineEdit、QMenu、QMenuBar、QPushButton、QRadioButton、QSizeGrip、QSpinBox、QSplitter、QStatusBar、QTextEdit和QToolTip支持此属性。

该值相对于框模型中的内容。
另请参阅最大高度。
messagebox-text-interaction-flags*Number消息框中文本的交互行为。可能的值基于Qt::TextInteractionFlags。
如果未指定此属性,则默认为当前样式为SH_MessageBox_TextInteractionFlags样式提示指定的值。
min-heightLength小部件或子控件的最小高度。
QAbstractItemView子类、QAbstractSpinBox子类、QCheckBox、QComboBox、QFrame、QGroupBox、QLabel、QLineEdit、QMenu、QMenuBar、QPushButton、QRadioButton、QSizeGrip、QSpinBox、QSplitter、QStatusBar、QTextEdit、QToolButton和QToolTip支持此属性。

如果未指定此属性,则根据小部件的内容和样式派生最小高度。

该值相对于框模型中的内容。
注意:设置此属性可能允许小部件缩小到小于内容所需的空间。

另见最小宽度。
min-widthLength小部件或子控件的最小宽度。
QAbstractItemView子类、QAbstractSpinBox子类、QCheckBox、QComboBox、QFrame、QGroupBox、QLabel、QLineEdit、QMenu、QMenuBar、QPushButton、QRadioButton、QSizeGrip、QSpinBox、QSplitter、QStatusBar、QTextEdit、QToolButton和QToolTip支持此属性。

如果未指定此属性,则根据小部件的内容和样式派生最小宽度。

该值相对于框模型中的内容。
注意:设置此属性可能允许小部件缩小到小于内容所需的空间。

另见最小高度。
opacity*Number小部件的不透明度。可能的值从0(透明)到255(不透明)。目前,仅支持工具提示。
如果未指定此属性,则默认为当前样式为SH_ToolTipLabel_Opacity样式提示指定的值。
outline围绕对象边界绘制的轮廓。
outline-colorColor轮廓的颜色。另请参阅边框颜色
outline-offsetLength大纲与小部件边框的偏移量。
outline-style指定用于绘制轮廓的模式。另请参阅边框样式
outline-radius为轮廓添加圆角
outline-bottom-left-radiusRadius轮廓左下角圆角的半径。
outline-bottom-right-radiusRadius轮廓右下角圆角的半径。
outline-top-left-radiusRadius轮廓左上角的半径。
outline-top-right-radiusRadius轮廓右上角圆角的半径。
paddingBox Lengths小部件的填充。相当于指定填充顶部、填充右侧、填充底部和填充左侧。
QAbstractItemView子类、QAbstractSpinBox子类、QCheckBox、QComboBox、QFrame、QGroupBox、QLabel、QLineEdit、QMenu、QMenuBar、QPushButton、QRadioButton、QSplitter、QTextEdit和QToolTip支持此属性。

如果未指定此属性,则默认为0。
另请参阅边距、行间距和框模型。
padding-topLength小部件的顶部填充。
padding-rightLength小部件的右填充。
padding-bottomLength小部件的底部填充。
padding-leftLength小部件的左填充。
paint-alternating-row-colors-for-empty-areaboolQTreeView是否为空白区域(即没有项目的区域)绘制交替的行颜色
placeholder-text-color*Brush用于文本编辑小部件的占位符文本的颜色。 如果未设置此属性,则默认值为为调色板的PlaceholderText角色设置的任何内容。 自6.5起可用。
position`relativeabsolute`
rightLength如果位置是相对的(默认值),则将子控件向左移动一定的偏移量;指定right: x等价于指定old:-x。 如果位置是绝对的,则right属性指定子控件的右边缘相对于父控件的右边缘(另请参阅子控件原点)。 另请参阅左侧、顶部和底部。
selection-background-color*Brush选定文本或项目的背景。 所有尊重QWidget::面板和显示选择文本的小部件都支持此属性。 如果未设置此属性,则默认值为为调色板的Highlight角色设置的任何内容。 另请参阅选择-颜色和背景。
show-decoration-selected*Boolean控制QListView中的选择是覆盖整行还是仅覆盖文本的范围。 如果未指定此属性,则默认为当前样式为SH_ItemView_ShowDecorationSelected样式提示指定的值。
spacing*Length小部件中的内部行间距。 QCheckBox、可检查的QGroupBox、QMenuBar和QRadioButton支持此属性。 如果未指定此属性,则默认值取决于小部件和当前样式。
subcontrol-origin*Origin父元素内子控件的原点矩形。 如果未指定此属性,则默认为填充。 另见子控制位置。
subcontrol-position*Alignment子控件在子控件指定的原点矩形内的对齐方式。 如果未指定此属性,则默认为依赖于子控件的值。
titlebar-show-tooltips-on-buttons}bool工具提示是否显示在窗口标题栏按钮上。
widget-animation-duration*Number动画应该持续多长时间(以毫秒为单位)。值等于零意味着动画将被禁用。 如果未指定此属性,则默认为当前样式为SH_Widget_Animation_Duration样式提示指定的值。 此属性是在Qt 5.10中添加的。
text-alignAlignment小部件内容中文本和图标的对齐方式。 如果未指定此值,则默认为取决于本机样式的值。 此属性目前仅受QPushButton和QProgressBar支持。
text-decorationnone underline overline line-through附加文本效果
topLength如果位置是相对的(默认值),则将子控件向下移动一定的偏移量。
如果位置是绝对的,则top属性指定子控件的上边缘与父控件的上边缘的关系(另请参阅subControl源)。

如果未指定此属性,则默认为0。另请参阅左、右和底部。
widthLength子控件(在某些情况下是小部件)的宽度。
如果未指定此属性,则默认为取决于子控件/小部件和当前样式的值。

警告:除非另有说明,否则此属性在小部件上设置时无效。如果您想要具有固定宽度的小部件,请将min-wide和max-wide设置为相同的值。
-qt-background-rolePaletteRole基于所选角色的子控件或小部件的背景颜色。
-qt-style-featureslist要应用Qt特定样式的CSS属性列表。
注意:该列表只能包含非基于像素图的属性。

图标的列表

Qt中使用的图标可以使用以下属性进行自定义。本节中列出的每个属性都具有Icon类型。

请注意,要使图标出现在QDialogButtonBox中的按钮中,您需要将dialogbuttonbox-buttons-have-icons图标属性设置为true。此外,要自定义图标的大小,请使用icon-size属性。

from PySide6.QtWidgets import QStyle


QStyle.StandardPixmap
Name翻译QStyle.StandardPixmap
backward-icon返回图标SP_ArrowBack
cd-icon光盘图标SP_DriveCDIcon
computer-icon计算机图标SP_ComputerIcon
desktop-icon桌面图标SP_DesktopIcon
dialog-apply-icon应用图标SP_DialogApplyButton
dialog-cancel-icon取消图标SP_DialogCancelButton
dialog-close-icon关闭图标SP_DialogCloseButton
dialog-discard-icon对话框-丢弃-图标SP_DialogDiscardButton
dialog-help-icon帮助图标SP_DialogHelpButton
dialog-no-icon对话框无图标SP_DialogNoButton
dialog-ok-icon对话框-ok-图标SP_DialogOkButton
dialog-open-icon对话框打开图标SP_DialogOpenButton
dialog-reset-icon对话框-重置-图标SP_DialogResetButton
dialog-save-icon保存图标SP_DialogSaveButton
dialog-yes-icon对话框是图标SP_DialogYesButton
directory-closed-icon目录-关闭-图标SP_DirClosedIcon
directory-icon目录图标SP_DirIcon
directory-link-icon目录链接图标SP_DirLinkIcon
directory-open-icon目录打开图标SP_DirOpenIcon
dockwidget-close-icon停靠小部件-关闭-图标SP_DockWidgetCloseButton
downarrow-icon向下箭头图标SP_ArrowDown
dvd-iconDVD图标SP_DriveDVDIcon
file-icon文件图标SP_FileIcon
file-link-icon文件链接图标SP_FileLinkIcon
filedialog-contentsview-icon文件对话框-内容视图-图标SP_FileDialogContentsView
filedialog-detailedview-icon文件对话框-详细视图-图标SP_FileDialogDetailedView
filedialog-end-icon文件端图标SP_FileDialogEnd
filedialog-infoview-icon文件对话框-信息视图-图标SP_FileDialogInfoView
filedialog-listview-icon文件对话框-列表视图-图标SP_FileDialogListView
filedialog-new-directory-icon文件对话框-新建-目录-图标SP_FileDialogNewFolder
filedialog-parent-directory-icon文件对话框-父-目录-图标SP_FileDialogToParent
filedialog-start-icon文件对话框-开始-图标SP_FileDialogStart
floppy-icon软盘图标SP_DriveFDIcon
forward-icon前向图标SP_ArrowForward
harddisk-icon硬盘图标SP_DriveHDIcon
home-icon家庭图标SP_DirHomeIcon
lineedit-clear-button-icon行编辑-清除-按钮-图标SP_LineEditClearButton
leftarrow-iconleftarrow-图标SP_ArrowLeft
messagebox-critical-icon消息框-关键-图标SP_MessageBoxCritical
messagebox-information-icon消息框-信息-图标SP_MessageBoxInformation
messagebox-question-icon消息框-问题-图标SP_MessageBoxQuestion
messagebox-warning-icon消息框-警告-图标SP_MessageBoxWarning
network-icon网络图标SP_DriveNetIcon
rightarrow-icon右塔罗图标SP_ArrowRight
titlebar-contexthelp-icon标题栏-上下文帮助-图标SP_TitleBarContextHelpButton
titlebar-maximize-icon标题栏-最大化-图标SP_TitleBarMaxButton
titlebar-menu-icon标题栏-菜单-图标SP_TitleBarMenuButton
titlebar-minimize-icon标题栏-最小化-图标SP_TitleBarMinButton
titlebar-normal-icon标题栏-正常-图标SP_TitleBarNormalButton
titlebar-shade-icon标题栏阴影图标SP_TitleBarShadeButton
titlebar-unshade-icon标题栏-未阴影-图标SP_TitleBarUnshadeButton
trash-icon垃圾图标SP_TrashIcon
uparrow-icon向上箭头SP_ArrowUp

样式表

为了美化窗口或控件的外观,可以通过窗口或控件的调色板给窗口或控件按照角色和分组设置颜色,还可以对窗口或控件的每个部分进行更细致的控制,这涉及窗口或控件的样式表(Qt style sheets,QSS),它是从 HTML 的层叠样式表(cascading style sheets,CSS)演化而来的。

  • 样式表由固定格式的文本构成,用窗口或控件的 setStyleSheet(styleSheet:str)方法设置样式,其中参数 styleSheet 是样式格式符。

    例如一个窗体上有多个继承自QPushButton 的按钮,用窗口的setStyleSheet方法可以将窗体上所有QPushButton类型的按钮定义成字体大小是20个像素、字体名称是宋体、字体颜色是红色,背景色是灰黑色的样式。

    self.setStyleSheet("""
    				   QPushButton{
                       font: 20pt'宋体';
                       color:rgb(255,0,0);
                       background-color: rgb(100,100,100)
                       }
    					""")
    
  • 也可以单独给某个按钮定义样式,例如有个 objectName 名称是btn_open 按钮,则用以下方法设置该按钮的字体大小是30个像素、宇体名称是黑体、字体颜色是白色,背景色是黑色的样式。

    btn_open.setStyleSheet("""
    					  font:30pt 黑体;
    					  color: rgb(255,255.255);
    					  background-color: rgb(0,0,0)
    					""")
    # 三对引号是为了方便观看,实际使用单对引号
    
  • 可以看出定义样式表的一般规则:

    • 样式属性:值的形式定义样式属性的值
    • 多个样式的样式属性:值对之间用分号;隔开
    • 如果是对某一类控件进行设置,需要先说明控件的类,然后后面跟一对大括号{},把样式属性:值放到{}中。

下面详细介绍样式表的格式。

选择器

样式表除了类名、对象名和属性名外,一般不区分大小写。

样式表由选择器(selector)和声明(declaration)两部分构成,选择器用于选择某种类型或多个类型的控件,声明是要设置的属性和属性的值,例如以下 QPushButton 和 QLineEdit 就是选择器,用于选择继承自QPushButton 和 QLineEdit 的所有控件和子控件。

"QPushButton,QLineEdit {font: 20pt 宋体;color: rgb(255,0,0);background-color: rgb(100,100,100))"

选择器的使用方法如表所示:

选择器示 例说 明
全局选择器*选择所有的控件
类型选择器QWidget选择QWidget及其子类
属性选择器QPushButton[flat=“false”]只选择属性 flat的值是 False的 QPushButton 控件
类选择器QPushButton选择QPushButton但不选择其子类
ID选择器QPushButton#btn_open选择名称是 btn_open(用setObjectName(“btn_ open”)方法设置)的所有 QPushButton
后代选择器QWidget QPushButton选择QWidget后代中所有的QPushButton
子对象选择器QWidget>QPushButton选择直接从属于QWidget的QPushButton

子控件

一些复合型控件,例如 QComboBox,由 QLineEdit 和向下的箭头构成,向下的箭头可以称为子控件。

对子控件的引用是在控件和子控件之间用两个连续的冒号::隔开,例如"QComboBox::drop-down(image: url(:/image/down.png))"在资源文件中设置具有向下箭头的图片。

控件的子控件名称如表所示。

子控件的名称说 明
grooveQSlider的凹槽
handleQScrollBar、QSplitter、QSlider 的手柄或滑块
cornerQAbstractScrollArea中两个滚动条之间的角落
add-lineQScrollBar增加行的按钮,即按下该按钮滚动条增加一行
add-pageQScrollBar在手柄(滑块)和增加行之间的区域
sub-lineQScrollBar 减少行的按钮,即按下该按钮滚动条减少一行
sub-pageQScrollBar 在手柄(滑块)和减少行之间的区域
down-arrowQComboBox、QHeaderView(排序指示器)、QScrollBar、QSpinBox的向下箭头
down-buttonQScrollBar或QSpinBox的向下按钮
up-arrowQHeaderView(排序指示器)、QScrollBar、QSpinBox的向上箭头
up-buttonQSpinBox的向上按钮
left-arrowQScrollBar 的左箭头
right-arrowQMenu或QScrolBar的右箭头
branchQTreeView的分支指示符
sectionQHeardeView的段
textQAbstractltemView的文本
chunkQProgressBar的进度块
drop-downQComboBox的下拉按钮
indicatorQAbstractltemView、QCheckBox、QRadioButton、QMenu(可被选中的)、QGroupBox(可被选中的)的指示器
paneQTabWidget的面板(边框)
right-cornerQTabWidget的右角落,可用于控件QTabWidget中右角落控件的位置
left-cornerQTabWidget的左角落,可用于控件QTabWidget中左角落控件的位置
tab-barQTabWidget的选项卡栏,仅用于控制 QTabBar 在 QTabWidget 中的位置
1abQTabBar或QToolBox的选项卡
tearQTabBar的可分离指示器
close-buttonQTabBar选项卡或QDockWidget上的关闭按钮
float-buttonQDockWidget 的浮动按钮
titleQDockWidget 或 QGroupBox的标题
scrollerQMenu或QTabBar的滚动条
separatorQMenu或 QMainWindow 中的分隔符
tearoffQMenu的可分离指示器
item8AbstrscttemView.QMenuBar.QMenu.QStatusBar 中的个项
iconQAbstractItemView 或QMenu的图标
menu-arrow带有菜单的QToolButton的箭头
menu-buttonQToolButton的菜单按钮
menu-indicatorQPushButton的菜单指示器

状态选择

一个控件有多种状态,例如活跃(active)激活(enabled)失效(disabled)、鼠标悬停(hover)、选中(checked)、未选中(unchecked)和可编辑(editable)等

根据控件所处的状态可以给控件设置不同的外观。

  • 样式表的格式字符串中,控件与状态之间用冒号:隔开,例如QPushButton:active(...)设置激活时的外观
  • 可以同时对多个状态进行设置,例如QPushButton:active: hoverl...
  • 设置激活或者光标悬停时的外观;可以在状态前加!表示相反的状态。

控件的常用状态如表所示。

控件的状态说 明
active控件处于激活状态
focus该项具有输入焦点
default该项是默认值
disabled控件已失效
enabled该控件已启用
hover光标悬停在该控件上
pressed使用鼠标按下该控件
no-frame该控件没有边框,例如无边框的 QLineEdit等
flat该控件是平的(flat),例如,一个平的 QPushButton
checked该控件被选中
unchecked该控件未被选中
off适用于处于关闭状态的控件
on适用于处于开启状态的控件
editableQComboBox是可编辑的
read-only该控件为只读,例如只读的 QLineEdit
indeterminate该控件具有不确定状态,例如,三态的QCheckBox
exclusive该控件是排他项目组的一部分
non-exclusive该控件是非排他项目组的一部分
bottom该控件位于底部
top该控件位于顶部
left该控件位于左侧,例如QTabBar的选项卡位于左侧
right该控件位于右侧,例如QTabBar的选项卡位于右侧
middle该控件位于中间,例如不在QTabBar 开头或结尾的选项卡
first该控件是第一个,例如 QTabBar 中的第一个选项卡
last该控件是最后一个,例如 QTabBar中的最后一个选项卡
horizontal该控件具有水平方向
vertical该控件具有垂直方向
maximized该控件是最大化的,例如最大化的QMdiSubWindow
minimized该控件是最小化的,例如最小化的QMdiSubWindow
floatable该控件是可浮动的
movable该控件可移动,例如,可移动的QDockWidget
only-one该控件是唯一的,例如只有一个选项卡的QTabBar
next-selected下一控件被选择
previous-selected上一控件被选择
selected该控件被选择
window控件是一个窗口,即顶级控件
closable该控件可被关闭,例如可关闭的QDockWidget
closed该控件处于关闭状态,例如QTreeView中的非展开控件
open该控件处于打开状态,例如QTreeView中的展开控件,或带有打开菜单的 QComboBox或 QPushButton控件
has-children该控件具有孩子,例如 QTreeView中具有子控件的控件
has-siblings该控件具有兄弟姐妹(即同级的控件)
alternate当QAbstractltemView.alternatingRowColors()被设置为true时,为每个交替行设 置此状态,以绘制QAbstractItemView的行

样式的属性

颜色属性的设置

控件有背景色、前景色及选中状态时的背景色和前景色,可以对这些颜色分别进行设置,这些颜色的属性名称如表所示

例:

QPushButton("background: gray; url(d:/s.png); background-repeat: repeat-x; background-position: left")

设置 QPushButton 类的颜色为灰色,设置背景图片为 d:/s.png,沿着 x 方向从左侧重复显示图片。

颜色属性名称类型说 明
backgroundBackground设置背景的简写方法,相当于指定 background-color、 background-image,background-repeat,background-position
background-colorBrush控件的背景色
background-imageUrl设置控件的背景图像
background-repeatRepeat如何使用背景图像填充背景区域 background-origin,若未 指定此属性,则在两个方向重复背景图像
background-positionAlignment背景图像在 background-origin矩形内的位置,默认 为 topleft
background-attachmentAttachment确定QAbstractScrollArea中的background-image是相对 于视口滚动还是固定,默认值为scroll
background-clipOrigin控件绘制背景的矩形,此属性指定 background-color 和 background-image 的裁剪矩形。此属性默认值为border(即边框矩形)
background-originOrigin.控件背景的原点矩形,通常与 background-position 和 background-image一起使用,默认为 padding(即边框矩 形)
colorBrush渲染文本的颜色,所有遵守 QWidget.palette 的控件都支 持此属性
selection-background-colorBrush所选文本或项的背景色,默认为调色板的 QPalette.Highlight角色的值
selection-colorBrush所选文本或项的前景色,默认为调色板的 QPalette. HighlightedText 角色的值
盒子的模型

大多数控件都是长方形的,一个长方形控件由 Content、Padding、Border、Margin 4部分构成,每个部分都是矩形。

Content 矩形是除掉边距、边框和填充之后的部分,默认情况下,边距、边框和填充的距离都为 0,因此这 4 个矩形是重合的,如图所示。

image-20230225185359062

可以用样式表分别设置这四个矩形之间的距离、边框的颜色。

  • Content 是输人内容的区域,可以设置 Content 区域宽度和高度的最大值和最小值,属性名称分别为 maxwidth、maxheight、min-width 和 min-height

    -“QSpinBox(min-height: 30px; max-height: 40px; min-width: 100px; max-width: 150px)”

  • 对于 Padding 区域,用padding 属性可以分别设置 Padding 与 Content 在上、右、下和左方向的距离,也可用padding-top、padding-right、padding-bottom 和 paddingleft 属性分别设置距离

    -"QSpinBox(padding: 10px 20px 25px 30px)“等价于"QSpinBox(padding-top: 10px; padding-right: 20px; padding-bottom: 25px;padding-left:30px)”

  • Border 区域可以设置的属性比较多,如表所示

    属性名称类 型说明
    borderBorder设置边框的简写方法,相当于指定 border-color、 border-style、border-width
    border-topBorder设置控件顶部边框的简写方法,相当于指定 border- top-color、border-top-style、border-top-width
    border-rightBorder设置控件右边框的简写方法,相当于指定border-right- color,border-right-style,border-right-width
    border-bottomBorder设置控件底部边框的简写方法,相当于指定 border-bottom-color、border-bottom-style、border-bottom-width
    border-leftBorder设置控件左边框的简写方法,相当于指定 border-leftr- color、border-left-style、border-left-width
    border-color gh04Box Colors边框边界线的颜色,相当于指定 border toprcolor、 border-bottom-color、border-left-color、border-right-color,默认值为 color(即控件的前景色)
    border-top-colorBrush边框顶部边界线的颜色
    border-right-colorBrush边框右边界线的颜色
    border-bottom-colorBrush边框底部边界线的颜色
    border-left-colorBrush边框左边界线的颜色
    border-radiusRadius边框角落的半径,等效于指定 border-top-left-radius、 border-top-right-radius、 border-bottom-left-radius、 border-bottom-right-radius.默认为0
    border-top-left-radiusRadius边框左上角的半径
    border-top-right-radiusRadius边框右上角的半径
    border-bottom-right-radiusRadius边框右下角的半径
    order-bottom-left-radiusRadius边框左下角的半径
    border-styleBorder Style边框边界线的样式(虚线、实线、点划线等),歌认 为 None
    border-top-styleBorder Style边框顶部边界线的样式
    border-right-styleBorder Style边框右侧边界线的样式
    border-bottom-styleBorder Style边框底部边界线的样式
    border-left-styleBorder Style边框左侧边界线的样式
    border-widthBorder Lengths边框的宽度,等效于指定 border-top-width 、border-bottom-width、borde-left-width、border-right-width
    border-top-widthL ength边框顶部边界线的宽度
    border-right-widthLength边框右侧边界线的宽度
    border-bottom-widthLength边框底部边界线的宽度
    border-left-widthLength边框左侧边界线的宽度
    border-imageBorder Image填充边框的图像,该图像皱分割成9个部分,并在必要时适当地拉伸
  • 对于 Margin 区域可以设置页边距。

    • margin 属性设篮控件的边距,等效于指定margin-top、margin-right、margin-bottom、margin-left,默认为0,margin-top、margin-right、margin-bottom、margin-left 分别设置控件的上、右、下和左侧的边距
与位置有关的属性

对于子控件,可以设置其在父控件中的位置,与此有关的属性名称如表所示

属性名称类型说 明
subcontrol-originOnigin子控件的矩形原点,默认为 padding
subcontrol-positionAlignment子控件在subcontrolorigin 属性指定的矩形内的对齐方式,殿记 值取决于子控件
positionRelative Absolute使用left、right top、bottom 属性的偏移是相对坐标还是绝对星 标,默认为 relative
spacingLength控件的内部间距(比如复选按钮和文本之间的距离),默认值 决于当前风格
top、right、bottom、leftLength以 bottom 属性为例,若 position属性是relative(默认值),则将 子控件向上移动;若 position 是 absolute(绝对的),则 bQtom 属 性是指与子控件的下边缘的距离,该距离与subcontrol-origin 属 性有关,默认为0
height widthLength子控件的高度/宽度,默认值取决于当前样式。注意:除非另有 规定,否则在控件上设置此属性无效。若想要控件有一个固定 的高度,应将 min-height 和 max-height的值设置为相同,宽度 类似
max-heightLength控件或子控件的最大高度
max-widthLength控件或子控件的最大宽度
min-heightLength控件或子控件的最小高度,默认值依赖于控件的内容和风格
min-widthLength控件或子控件的最小宽度,默认值依赖于控件的内容和风格

由于样式表是字符串,因此对于比较复杂的样式表,可以将其保存到文本文件或二进制文件中,需要用时再读人进来。

基本语法

类似 CSS,QSS 每一条都是由一个选择器和一组声明构成:

选择器选出要对哪种控件进行样式修改,

每个声明都是键值对,键为属性,值为属性值

QSS语法

使用方式

为降低耦合,往往把 QSS 写在一个单独的style.qss文件中,然后在 main.pyQApplicationQMainWindow 中加载样式

编写QSS

新建一个扩展名为.qss的文件,如style.qss,编辑内容。(本文后面有完整的样式主题、QSS 编辑器推荐)

把写好的 .qss 添加到 qrc

加载QSS

创建一个加载QSS样式表的公共类:

class QSSLoader:
    def __init__(self):
        pass

    @staticmethod
    def read_qss_file(qss_file_name):
        with open(qss_file_name,'r',encoding='UTF-8')as file:
            return file.read()

在代码中加载qss样式表:

app = QApplication(sys.argv)
window = MainWindow()
 
style_file = './style.qss'
style_sheet = QSSLoader.read_qss_file(style_file)
window.setStyleSheet(style_sheet)

window.show()
sys.exit(app.exec_())

QSS 编辑器

如果对上面推荐的这几个主题还不满意,你可以设计自己的QSS,下面推荐一些专用编辑器

QssStylesheetEditor

GitHub首页

中文README

QssStylesheetEditor 是一个功能强大的 Qt 样式表(QSS)编辑器,支持实时预览,自动提示,自定义变量,支持预览自定义ui代码,引用QPalette等功能。

程序主界面

自动补全功能

这个软件有如下特点:

  • Qss代码高亮,代码折叠
  • Qss代码自动提示,自动补全
  • 实时预览 Qss 样式效果,可以预览几乎所有的 qtwidget 控件效果
  • 支持预览自定义界面代码
  • 支持在 Qss 中自定义变量
  • 自定义变量可以在颜色对话框中拾取变量的颜色
  • 支持通过颜色对话框改变QPalette,并在Qss中引用
  • 支持相对路径引用图片,以及引用资源文件中的图片
  • 支持切换不同的系统 theme,如 xp 主题,vista 主题等(不同 theme 下 qss 效果会略有差异)
  • 能够在 windows,linux,unix 上运行
  • 支持多国语言(目前已有中文,英文,俄文翻译)

还有许多强大而实用的功能,可以在README中查看

QSS Editor

🎨 Cross-platform application to edit and preview Qt style sheets(QSS).

跨平台的QSS编辑/预览应用

GitHub主页

GitHub realeases

下载地址2

qsseditor-1

qsseditor-2

Pycharm、VScode 插件

在Pycharm中可以安装Qt Style Sheet Highlighter插件,提供对QSS的代码高亮功能

Qt Style Sheet Highlighter

Qt Style Sheet Highlighter 演示

在VScode里可以安装Qt for Python插件,该插件不仅支持qss文件的代码高亮,还支持qml、qrc、pro等代码的高亮

Qt for Python

QSS 样式分享

Qt 官方例子

Qt Style Sheets Examples

Qt官方给出的一些小例子,不一定好看但有很强的学习参考性

Qt-Material

UN-GCPDS/qt-material

This is another stylesheet for PySide6,PySide2 and PyQt5,which looks like Material Design(close enough).

“一个仿Material的样式,适用于PySide6,PySide2以及PyQt5”

浅色主题演示

深色主题演示

使用这套样式表也非常简单,作者已经打包发布到了pypi,所以我们只需要

pip install qt-material

安装,并在代码中import即可

# 使用例子
import sys
# from PySide6 import QtWidgets
# from PySide2 import QtWidgets
from PyQt5 import QtWidgets
from qt_material import apply_stylesheet

# create the application and the main window
app = QtWidgets.QApplication(sys.argv)
window = QtWidgets.QMainWindow()

# setup stylesheet
apply_stylesheet(app,theme='dark_teal.xml')

# run
window.show()
app.exec_()

更多详细内容请查阅该项目的README

qtmodern

GitHub 首页

qtmodern

该库也已经添加至 PyPI,可以通过 pip 安装使用:

pip install qtmodern
import qtmodern.styles
import qtmodern.windows

...

app = QApplication()
win = YourWindow()

qtmodern.styles.dark(app)
mw = qtmodern.windows.ModernWindow(win)
mw.show()

...

PyDracula

GitHub 首页

YouTube 演示与教程

注意此项目对应 PySide6 / PyQt6,而不是 PyQt5

PyDracula 深色主题

PyDracula 浅色主题

一个现代化的 GUI,对高 DPI 有更好支持:

Qt Widgets 是一项老技术,对高 DPI 设置没有很好的支持,当您的系统应用DPI 高于 100% 时,这些图像看起来会失真。 通过在 Qt 模块导入正下方的"main.py"中应用以下代码,您可以使用一种变通方法来最小化此问题。

# ADJUST QT FONT DPI FOR HIGHT SCALE
# 
from modules import *
from widgets import *
os.environ["QT_FONT_DPI"]="96"

PyOneDark

GitHub 首页

YouTube 展示视频

和上面的 PyDracula 是同一作者

同样是对应 PySide6

PyOneDark

该作者还有一个Simple_PySide_Base的仓库,对 PySide2 或 PyQt5 初学者如何创建一个美观的 GUI 程序是不错的参考

PyQtDarkTheme

GitHub 首页

  • 扁平风格的深色/浅色主题
  • 支持 PySide 与 PyQt
  • 支持 PyInstaller
  • 解决了 Qt 版本间的风格差异
  • 深色和浅色主题的 QPalette

PyQtDarkTheme-深色主题

PyQtDarkTheme-浅色主题

此主题的详细使用方法请参考文档

飞扬青云-QSS

在飞扬青云的QWidgetDemo项目中的styledemo子项目包含了3套很好看的QSS样式

PS黑色

浅蓝色

扁平化白色

QSS目录链接

QDarkStyleSheet

The most complete dark/light style sheet for Qt applications

“最完整的深色/浅色Qt主题”

-文档

-GitHub

containers_no_tabs_buttons

containers_no_tabs_buttons1

containers_tabs_displays

widgets_inputs_fields1

也可以通过pip直接安装使用

pip install qdarkstyle
# PyQt5 使用例子
import sys
import qdarkstyle
from PyQt5 import QtWidgets

# create the application and the main window
app = QtWidgets.QApplication(sys.argv)
window = QtWidgets.QMainWindow()

# setup stylesheet
app.setStyleSheet(qdarkstyle.load_stylesheet_pyqt5())
# or in new API
app.setStyleSheet(qdarkstyle.load_stylesheet(qt_api='pyqt5'))

# run
window.show()
app.exec_()

GTRONICK-QSS

GTRONICK/QSS: QT Style Sheets templates

一组QSS样式

Ubuntu

MaterialDark

ElegantDark

Aqua

AMOLED

用第三方包设置样式

第三方包 qt-material提供了一些样式主题,在使用qt-material之前,需要用命令"pipinstall qt-material"安装 gt-material。

  • 用gt-material的 list_themes()方法可获得主题名称列表
  • 用apply_stylesheet(parent,theme)方法可以应用样式主题。

PyQt 图标库QtAwesome

GitHub 主页

QtAwesome enables iconic fonts such as Font Awesome and Elusive Icons in PyQt and PySide applications.

It started as a Python port of theQtAwesomeC++ library by Rick Blommers.

可以通过 conda 或者 pip 安装

conda install qtawesome
pip install qtawesome

QtAwesome 截图

QtAwesome 还附带一个图标浏览器,可以显示所有可用的图标。你可以使用它来搜索适合需求的图标,然后复制应该用于创建该图标的名称到代码中以应用图标

QtAwesome 图标浏览器

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
10.1 何为Qt样式表 由于Qt样式表的引入,定制Qt部件的外观样式变得非常简单。 Qt样式表的思想很大程度上是来自于HTML的层叠式样式表(CSS), 通过调用QWidget::setStyleSheet()或QApplication::setStyleSheet(), 你可以为一个独立的子部件、整个窗口,甚至是整个个应用程序指定一个样式表。 样式表是通过QStyle的一个叫做QStyleSheetStyle的特殊子类来实现的。 这个特殊的子类实际上是其他的系统特定风格类的包裹类,它会把通过样式表指定的自定义外观风格应用在底层的系统特定风格之上。 10.2 样式表语法基础 Qt样式表与CSS的语法规则几乎完全相同,如果你已经了解了CSS,完全可以跳过本节。 一个样式表由一系列的样式规则构成。每个样式规则都有着下面的形式: selector { attribute: value } 选择器(selector)部分通常是一个类名(例如QComboBox),当然也还有其他的语法形式。 属性(attribute)部分是一个样式表属性的名字, 值(value)部分是赋给该属性的值。 为了使用方便,我们还可以使用一种简化形式: selector1, selector2, ..., selectorM { attribute1: value1; attribute2: value2; ... attributeN: valueN; } 这种简化形式可以同时为与M个选择器相匹配的部件设置N种属性。 例如: QCheckBox, QComboBox, QSpinBox { color: red; //字体颜色:红 font: bold; } 这个规则设置了所有的QCheckBox、QComboBox和QSpinBox的前景色、背景色和字体。 10.3 方箱模型 在样式表中,每个部件都被看作是一个由四个同心相似的矩形组成的箱体: 空白(margin)、边框(border)、填充(padding)和内容(content)。 对于一个平面部件——例如一个空白、边框和填充都是0像素的部件——而言,这四个矩形是完全重合的。 空白区域位于边框外,并且总是透明的。 边框为部件提供了四周的框架,其border-style属性可以设置为一些内置的框架风格,如inset、outset、solid和ridge。 填充在边框和内容区域之间提供了空白间隔。 10.4 前景与背景 部件的前景色用于绘制上面的文本,可以通过color属性指定。 背景色用于绘制部件的填充矩形,可以通过background-color属性指定。 背景图片使用background-image属性定义,它用于绘制由background-origin指定的矩形区域(空白、边框、填充或内容)。背景图片在矩形区域内的对齐和平铺方式可以通过background-position和background-repeat属性指定。 QFrame { margin: 10px; border: 2px solid green; padding: 20px; background-image: url(qt.png); background-position: top right; background-origin: content; background-repeat: none; } 在这个例子中,QFrame四周的空白、边框和填充值都是一样的。 实际上margin属性可以在上下左右四个方向分别指定我们需要的不同值,例如: QFrame { margin: 14px 18px 20px 18px; } 同时,我们也可以分别指定margin-top、margin-right、margin-bottom、margin-left四个属性。 QFrame { margin-top: 14px; margin-right: 18px; margin-bottom: 20px; margin-left: 18px; } 虽然目前我们仅仅使用了QFrame作为例子,但是我们也可以同样的将这些属性应用于任何一个支持方箱模型的Qt部件,例如:QCheckBox、 QLabel、QLineEdit、QListView、QMenu、QPushButton、QTextEdit、和QToolTip。 10.5 可缩放样式 在默认情况下,通过background-image指定的背景图片会自动重复平铺,以覆盖部件的整个填充矩形(即边框里面的那个区域)。 ///注意区别: 如果我们想创建能够随着部件大小自动缩放而不是平铺的背景,我们需要设置一种称之为“边框图片”的东东。 注意 “边框图片”可以通过border-image属性指定,它同时提供了部件的背景和边框。 一个“边框图片”被分为九个部分(九宫格),有点向tic-tac-toe游戏的棋盘。 当一个部件的边框被填充时,四角的格子通常不会发生变化,而其余的五个格子则可能被拉伸或平铺以填充可用空间。 当指定一个“边框图片”时,除了图片本身,我们还必须指定用来分割九宫格的四条分割线。同时我们还必须指定非边角的格子是应该平铺还是拉伸,以及边框的宽度(用来确定边角格子的大小,防止边角被缩放变形)。 例如,下面的样式表定义了上图中的button: QPushButton { border-width: 4px; border-image: url(button.png) 4 4 4 4 stretch stretch; } 另外,“边框图片”还应该含有alpha通道,以使背景能够在边角处露出来。 10.6控制大小 min-width和min-height两个属性可以用来指定一个部件的内容区域的最小大小。 这两个值将影响部件的minimumSizeHint(),并在布局时被考虑。 例如: QPushButton { min-width: 68px; min-height: 28px; } 如果该属性没有被指定,最小大小将从部件的内容区域和当前样式中继承。 10.7 伪状态 部件的外观可以按照用户界面元素状态的不同来分别定义,这在样式表中被称为“伪状态”。例如,如果我们想在一个push button在被按下的时候具有sunken的外观,我们可以指定一个叫做 :pressed 的伪状态。 QPushButton { border: 2px outset green; } QPushButton:pressed { background: gray; }
### 回答1: QStyleQt 框架中的类,用于定义控件的外观和行为。如果想将 QStyle 对象转换为字符串,可以使用 QStyle 的 metaObject() 方法获取其元对象,然后调用元对象的 className() 方法获取类名。 示例代码如下: ```c++ QStyle* myStyle = new QStyle(); QString styleName = myStyle->metaObject()->className(); qDebug() << styleName; // 输出 "QStyle" ``` 这样就可以将 QStyle 对象转换为字符串了。 ### 回答2: QStyleQt框架中的一个类,用于提供用户界面的样式和外观。它可以用来定制应用程序窗口、按钮、文本框等控件的外观和风格。 要将QStyle对象转换为字符串,我们可以使用QStyle 的typename()方法。typename()方法返回一个QString,包含了QStyle的类型名。 以下是一个示例代码: ```cpp #include <QStyle> #include <QDebug> int main() { QStyle* style = new QStyle(); // 创建一个QStyle对象 QString styleTypeName = style->typeName(); // 将QStyle对象转换为字符串 qDebug() << "QStyle类型名:" << styleTypeName; delete style; return 0; } ``` 运行这段代码后,会输出类似以下的结果: ``` QStyle类型名: QStyle ``` 这样就实现了将QStyle对象转换为字符串的功能。请注意,QStyle对象的字符串表示仅包含其类型名,而不包含其他属性或方法。如果需要获取更多关于QStyle对象的信息,可以使用其他成员函数和属性来检索。 ### 回答3: QStyleQt框架中的一个类,用于界面风格的管理和绘制。要将QStyle对象转换成字符串,可以使用QStyle的objectName属性来获取其名称,并通过QString的toStdString()方法将其转换为标准字符串。 下面是一个示例代码: ```cpp QStyle* style = QApplication::style(); // 获取当前应用程序的界面风格 QString styleName = style->objectName(); // 获取QStyle对象的名称 std::string styleStr = styleName.toStdString(); // 将QString转换为标准字符串 ``` 在这个例子中,首先获取当前应用程序的界面风格,然后使用objectName属性获取其名称,并将其转换为标准字符串。最终得到的styleStr就是QStyle对象的字符串表示。 需要注意的是,上述代码只能在已经创建了QApplication对象之后才能正常运行,因为QStyle的获取依赖于QApplication。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

士别三日,当挖目相待

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值