如何在 PyQt6 中自定义 QMessageBox 的标题栏?

我在 Windows 10 上的 Python 3.9.6 x64 上使用 PyQt6 6.1.0,我想知道如何自定义 QMessageBox 的标题栏。

在我的项目中,一切都是黑暗主题,我使用QStyleSheet自定义了QStyleSheet可以主题化的所有内容,除了标题栏和QScrollArea,它们与主题不一致。

我已经通过使用 .setPalette() 方法成功地设置了 QScrollArea 的样式,并找到了一种自定义窗口标题栏的方法:https://stackoverflow.com/a/57571299/16383578,但到目前为止我还没有找到任何关于自定义的内容QMessageBox 的标题栏。

我想要的很简单,改变标题栏的字体大小、字体、字体颜色、背景颜色和关闭按钮。

我已经成功使用样式表自定义了 QMessageBox 的内容,但是我找不到自定义标题栏的方法,我无法使用样式表修改它,也无法使用 QPalette 修改它因为标题栏没有颜色作用,谷歌搜索数小时无果......

但是我找到了一个 QStyle 类并使用了我写的一个函数来递归地列出它的属性,我找到了这个:

<class path="PyQt6.QtWidgets.QStyle">
        <attr name="alignedRect"/>
        <attr name="childEvent"/>
        <attr name="combinedLayoutSpacing"/>
        <attr name="connectNotify"/>
        <attr name="customEvent"/>
        <attr name="disconnectNotify"/>
        <attr name="drawComplexcontrol"/>
        <attr name="drawControl"/>
        <attr name="drawItemPixmap"/>
        <attr name="drawItemText"/>
        <attr name="drawPrimitive"/>
        <attr name="generatedIconPixmap"/>
        <attr name="hitTestComplexcontrol"/>
        <attr name="isSignalConnected"/>
        <attr name="itemPixmapRect"/>
        <attr name="itemTextRect"/>
        <attr name="layoutSpacing"/>
        <attr name="name"/>
        <attr name="pixelMetric"/>
        <attr name="polish"/>
        <attr name="proxy"/>
        <attr name="receivers"/>
        <attr name="sender"/>
        <attr name="senderSignalIndex"/>
        <attr name="sizeFromContents"/>
        <attr name="sliderPositionFromValue"/>
        <attr name="sliderValueFromPosition"/>
        <attr name="standardIcon"/>
        <attr name="standardPalette"/>
        <attr name="standardPixmap"/>
        <attr name="styleHint"/>
        <attr name="subControlRect"/>
        <attr name="subElementRect"/>
        <attr name="timerEvent"/>
        <attr name="unpolish"/>
        <attr name="visualAlignment"/>
        <attr name="visualPos"/>
        <attr name="visualRect"/>
        <class path="PyQt6.QtWidgets.QStyle.Complexcontrol">
            <attr name="CC_SpinBox"/>
            <attr name="CC_ComboBox"/>
            <attr name="CC_ScrollBar"/>
            <attr name="CC_Slider"/>
            <attr name="CC_ToolButton"/>
            <attr name="CC_TitleBar"/>
            <attr name="CC_Dial"/>
            <attr name="CC_GroupBox"/>
            <attr name="CC_MdiControls"/>
            <attr name="CC_CustomBase"/>
        </class>
        <class path="PyQt6.QtWidgets.QStyle.ContentsType">
            <attr name="CT_PushButton"/>
            <attr name="CT_CheckBox"/>
            <attr name="CT_RadioButton"/>
            <attr name="CT_ToolButton"/>
            <attr name="CT_ComboBox"/>
            <attr name="CT_Splitter"/>
            <attr name="CT_ProgressBar"/>
            <attr name="CT_MenuItem"/>
            <attr name="CT_MenuBarItem"/>
            <attr name="CT_MenuBar"/>
            <attr name="CT_Menu"/>
            <attr name="CT_TabBarTab"/>
            <attr name="CT_Slider"/>
            <attr name="CT_ScrollBar"/>
            <attr name="CT_LineEdit"/>
            <attr name="CT_SpinBox"/>
            <attr name="CT_SizeGrip"/>
            <attr name="CT_tabwidget"/>
            <attr name="CT_DialogButtons"/>
            <attr name="CT_HeaderSection"/>
            <attr name="CT_GroupBox"/>
            <attr name="CT_MdiControls"/>
            <attr name="CT_ItemViewItem"/>
            <attr name="CT_CustomBase"/>
        </class>
        <class path="PyQt6.QtWidgets.QStyle.ControlElement">
            <attr name="CE_PushButton"/>
            <attr name="CE_PushButtonBevel"/>
            <attr name="CE_PushButtonLabel"/>
            <attr name="CE_CheckBox"/>
            <attr name="CE_CheckBoxLabel"/>
            <attr name="CE_RadioButton"/>
            <attr name="CE_RadioButtonLabel"/>
            <attr name="CE_TabBarTab"/>
            <attr name="CE_TabBarTabShape"/>
            <attr name="CE_TabBarTabLabel"/>
            <attr name="CE_ProgressBar"/>
            <attr name="CE_ProgressBarGroove"/>
            <attr name="CE_ProgressBarContents"/>
            <attr name="CE_ProgressBarLabel"/>
            <attr name="CE_MenuItem"/>
            <attr name="CE_MenuScroller"/>
            <attr name="CE_MenuVMargin"/>
            <attr name="CE_MenuHMargin"/>
            <attr name="CE_MenuTearoff"/>
            <attr name="CE_MenuEmptyArea"/>
            <attr name="CE_MenuBarItem"/>
            <attr name="CE_MenuBarEmptyArea"/>
            <attr name="CE_ToolButtonLabel"/>
            <attr name="CE_Header"/>
            <attr name="CE_HeaderSection"/>
            <attr name="CE_HeaderLabel"/>
            <attr name="CE_ToolBoxTab"/>
            <attr name="CE_SizeGrip"/>
            <attr name="CE_Splitter"/>
            <attr name="CE_RubberBand"/>
            <attr name="CE_DockWidgetTitle"/>
            <attr name="CE_ScrollBarAddLine"/>
            <attr name="CE_ScrollBarSubLine"/>
            <attr name="CE_ScrollBarAddPage"/>
            <attr name="CE_ScrollBarSubPage"/>
            <attr name="CE_ScrollBarSlider"/>
            <attr name="CE_ScrollBarFirst"/>
            <attr name="CE_ScrollBarLast"/>
            <attr name="CE_FocusFrame"/>
            <attr name="CE_ComboBoxLabel"/>
            <attr name="CE_ToolBar"/>
            <attr name="CE_ToolBoxTabShape"/>
            <attr name="CE_ToolBoxTabLabel"/>
            <attr name="CE_HeaderEmptyArea"/>
            <attr name="CE_ColumnViewGrip"/>
            <attr name="CE_ItemViewItem"/>
            <attr name="CE_ShapedFrame"/>
            <attr name="CE_CustomBase"/>
        </class>
        <class path="PyQt6.QtWidgets.QStyle.PixelMetric">
            <attr name="PM_Buttonmargin"/>
            <attr name="PM_ButtonDefaultIndicator"/>
            <attr name="PM_MenuButtonIndicator"/>
            <attr name="PM_ButtonShiftHorizontal"/>
            <attr name="PM_ButtonShiftVertical"/>
            <attr name="PM_DefaultFrameWidth"/>
            <attr name="PM_SpinBoxFrameWidth"/>
            <attr name="PM_ComboBoxFrameWidth"/>
            <attr name="PM_MaximumDragDistance"/>
            <attr name="PM_ScrollBarExtent"/>
            <attr name="PM_ScrollBarSliderMin"/>
            <attr name="PM_SliderThickness"/>
            <attr name="PM_SliderControlThickness"/>
            <attr name="PM_SliderLength"/>
            <attr name="PM_SliderTickmarkOffset"/>
            <attr name="PM_SliderSpaceAvailable"/>
            <attr name="PM_DockWidgetSeparatorExtent"/>
            <attr name="PM_DockWidgetHandleExtent"/>
            <attr name="PM_DockWidgetFrameWidth"/>
            <attr name="PM_TabBarTabOverlap"/>
            <attr name="PM_TabBarTabHSpace"/>
            <attr name="PM_TabBarTabVSpace"/>
            <attr name="PM_TabBarBaseHeight"/>
            <attr name="PM_TabBarBaseOverlap"/>
            <attr name="PM_ProgressBarChunkWidth"/>
            <attr name="PM_SplitterWidth"/>
            <attr name="PM_TitleBarHeight"/>
            <attr name="PM_MenuScrollerHeight"/>
            <attr name="PM_MenuHMargin"/>
            <attr name="PM_MenuVMargin"/>
            <attr name="PM_MenuPanelWidth"/>
            <attr name="PM_MenuTearoffHeight"/>
            <attr name="PM_MenuDesktopFrameWidth"/>
            <attr name="PM_MenuBarPanelWidth"/>
            <attr name="PM_MenuBarItemSpacing"/>
            <attr name="PM_MenuBarVMargin"/>
            <attr name="PM_MenuBarHMargin"/>
            <attr name="PM_IndicatorWidth"/>
            <attr name="PM_IndicatorHeight"/>
            <attr name="PM_ExclusiveIndicatorWidth"/>
            <attr name="PM_ExclusiveIndicatorHeight"/>
            <attr name="PM_DialogButtonsSeparator"/>
            <attr name="PM_DialogButtonsButtonWidth"/>
            <attr name="PM_DialogButtonsButtonHeight"/>
            <attr name="PM_MdiSubWindowFrameWidth"/>
            <attr name="PM_MdiSubWindowMinimizedWidth"/>
            <attr name="PM_HeaderMargin"/>
            <attr name="PM_HeaderMarkSize"/>
            <attr name="PM_HeaderGripMargin"/>
            <attr name="PM_TabBarTabShiftHorizontal"/>
            <attr name="PM_TabBarTabShiftVertical"/>
            <attr name="PM_TabBarScrollButtonWidth"/>
            <attr name="PM_ToolBarFrameWidth"/>
            <attr name="PM_ToolBarHandleExtent"/>
            <attr name="PM_ToolBarItemSpacing"/>
            <attr name="PM_ToolBarItemMargin"/>
            <attr name="PM_ToolBarSeparatorExtent"/>
            <attr name="PM_ToolBarExtensionExtent"/>
            <attr name="PM_SpinBoxSliderHeight"/>
            <attr name="PM_ToolBarIconSize"/>
            <attr name="PM_ListViewIconSize"/>
            <attr name="PM_IconViewIconSize"/>
            <attr name="PM_SmallIconSize"/>
            <attr name="PM_LargeIconSize"/>
            <attr name="PM_FocusFrameVMargin"/>
            <attr name="PM_FocusFrameHMargin"/>
            <attr name="PM_ToolTipLabelFrameWidth"/>
            <attr name="PM_CheckBoxLabelSpacing"/>
            <attr name="PM_TabBarIconSize"/>
            <attr name="PM_SizeGripSize"/>
            <attr name="PM_DockWidgetTitleMargin"/>
            <attr name="PM_MessageBoxIconSize"/>
            <attr name="PM_ButtonIconSize"/>
            <attr name="PM_DockWidgetTitleBarButtonmargin"/>
            <attr name="PM_RadioButtonLabelSpacing"/>
            <attr name="PM_LayoutLeftMargin"/>
            <attr name="PM_LayoutTopMargin"/>
            <attr name="PM_LayoutRightMargin"/>
            <attr name="PM_LayoutBottomMargin"/>
            <attr name="PM_LayoutHorizontalSpacing"/>
            <attr name="PM_LayoutVerticalSpacing"/>
            <attr name="PM_TabBar_ScrollButtonOverlap"/>
            <attr name="PM_TextCursorWidth"/>
            <attr name="PM_TabCloseIndicatorWidth"/>
            <attr name="PM_TabCloseIndicatorHeight"/>
            <attr name="PM_ScrollView_ScrollBarSpacing"/>
            <attr name="PM_SubMenuOverlap"/>
            <attr name="PM_ScrollView_ScrollBarOverlap"/>
            <attr name="PM_TreeViewIndentation"/>
            <attr name="PM_HeaderDefaultSectionSizeHorizontal"/>
            <attr name="PM_HeaderDefaultSectionSizeVertical"/>
            <attr name="PM_TitleBarButtonIconSize"/>
            <attr name="PM_TitleBarButtonSize"/>
            <attr name="PM_CustomBase"/>
        </class>
        <class path="PyQt6.QtWidgets.QStyle.PrimitiveElement">
            <attr name="PE_Frame"/>
            <attr name="PE_FrameDefaultButton"/>
            <attr name="PE_FrameDockWidget"/>
            <attr name="PE_FrameFocusRect"/>
            <attr name="PE_FrameGroupBox"/>
            <attr name="PE_FrameLineEdit"/>
            <attr name="PE_FrameMenu"/>
            <attr name="PE_Frametabwidget"/>
            <attr name="PE_FrameWindow"/>
            <attr name="PE_FrameButtonBevel"/>
            <attr name="PE_FrameButtonTool"/>
            <attr name="PE_FrametabBarBase"/>
            <attr name="PE_PanelButtonCommand"/>
            <attr name="PE_PanelButtonBevel"/>
            <attr name="PE_PanelButtonTool"/>
            <attr name="PE_PanelMenuBar"/>
            <attr name="PE_PanelToolBar"/>
            <attr name="PE_PanelLineEdit"/>
            <attr name="PE_IndicatorArrowDown"/>
            <attr name="PE_IndicatorArrowLeft"/>
            <attr name="PE_IndicatorArrowRight"/>
            <attr name="PE_IndicatorArrowUp"/>
            <attr name="PE_IndicatorBranch"/>
            <attr name="PE_IndicatorButtonDropDown"/>
            <attr name="PE_IndicatorCheckBox"/>
            <attr name="PE_IndicatorDockWidgetResizeHandle"/>
            <attr name="PE_IndicatorHeaderArrow"/>
            <attr name="PE_IndicatorMenuCheckMark"/>
            <attr name="PE_IndicatorProgressChunk"/>
            <attr name="PE_IndicatorRadioButton"/>
            <attr name="PE_IndicatorSpinDown"/>
            <attr name="PE_IndicatorSpinminus"/>
            <attr name="PE_IndicatorSpinPlus"/>
            <attr name="PE_IndicatorSpinUp"/>
            <attr name="PE_IndicatorToolBarHandle"/>
            <attr name="PE_IndicatorToolBarSeparator"/>
            <attr name="PE_PanelTipLabel"/>
            <attr name="PE_IndicatorTabTear"/>
            <attr name="PE_PanelScrollAreaCorner"/>
            <attr name="PE_Widget"/>
            <attr name="PE_IndicatorColumnViewArrow"/>
            <attr name="PE_FrameStatusBarItem"/>
            <attr name="PE_IndicatorItemViewItemCheck"/>
            <attr name="PE_IndicatorItemViewItemDrop"/>
            <attr name="PE_PanelItemViewItem"/>
            <attr name="PE_PanelItemViewRow"/>
            <attr name="PE_PanelStatusBar"/>
            <attr name="PE_IndicatorTabClose"/>
            <attr name="PE_PanelMenu"/>
            <attr name="PE_IndicatorTabTearRight"/>
            <attr name="PE_CustomBase"/>
        </class>
        <class path="PyQt6.QtWidgets.QStyle.RequestsoftwareInputPanel">
            <attr name="RSIP_OnmouseclickAndAlreadyFocused"/>
            <attr name="RSIP_Onmouseclick"/>
        </class>
        <class path="PyQt6.QtWidgets.QStyle.StandardPixmap">
            <attr name="SP_TitleBarMenuButton"/>
            <attr name="SP_TitleBarMinButton"/>
            <attr name="SP_TitleBarMaxButton"/>
            <attr name="SP_TitleBarCloseButton"/>
            <attr name="SP_TitleBarNormalButton"/>
            <attr name="SP_TitleBarShadeButton"/>
            <attr name="SP_TitleBarUnshadeButton"/>
            <attr name="SP_TitleBarContextHelpButton"/>
            <attr name="SP_DockWidgetcloseButton"/>
            <attr name="SP_MessageBoxInformation"/>
            <attr name="SP_MessageBoxWarning"/>
            <attr name="SP_MessageBoxCritical"/>
            <attr name="SP_MessageBoxQuestion"/>
            <attr name="SP_DesktopIcon"/>
            <attr name="SP_TrashIcon"/>
            <attr name="SP_ComputerIcon"/>
            <attr name="SP_DriveFDIcon"/>
            <attr name="SP_DriveHDIcon"/>
            <attr name="SP_DriveCDIcon"/>
            <attr name="SP_DriveDVDIcon"/>
            <attr name="SP_DriveNetIcon"/>
            <attr name="SP_DirOpenIcon"/>
            <attr name="SP_DirClosedIcon"/>
            <attr name="SP_DirLinkIcon"/>
            <attr name="SP_FileIcon"/>
            <attr name="SP_FileLinkIcon"/>
            <attr name="SP_ToolBarHorizontalExtensionButton"/>
            <attr name="SP_ToolBarVerticalExtensionButton"/>
            <attr name="SP_FileDialogStart"/>
            <attr name="SP_FileDialogEnd"/>
            <attr name="SP_FileDialogToParent"/>
            <attr name="SP_FileDialogNewFolder"/>
            <attr name="SP_FileDialogDetailedView"/>
            <attr name="SP_FileDialogInfoView"/>
            <attr name="SP_FileDialogContentsView"/>
            <attr name="SP_FileDialogListView"/>
            <attr name="SP_FileDialogBack"/>
            <attr name="SP_DirIcon"/>
            <attr name="SP_DialogOkButton"/>
            <attr name="SP_DialogCancelButton"/>
            <attr name="SP_DialogHelpButton"/>
            <attr name="SP_DialogOpenButton"/>
            <attr name="SP_DialogSaveButton"/>
            <attr name="SP_DialogCloseButton"/>
            <attr name="SP_DialogApplyButton"/>
            <attr name="SP_DialogResetButton"/>
            <attr name="SP_DialogDiscardButton"/>
            <attr name="SP_DialogYesButton"/>
            <attr name="SP_DialogNoButton"/>
            <attr name="SP_ArrowUp"/>
            <attr name="SP_ArrowDown"/>
            <attr name="SP_ArrowLeft"/>
            <attr name="SP_ArrowRight"/>
            <attr name="SP_ArrowBack"/>
            <attr name="SP_ArrowForward"/>
            <attr name="SP_DirHomeIcon"/>
            <attr name="SP_CommandLink"/>
            <attr name="SP_VistaShield"/>
            <attr name="SP_BrowserReload"/>
            <attr name="SP_BrowserStop"/>
            <attr name="SP_MediaPlay"/>
            <attr name="SP_MediaStop"/>
            <attr name="SP_MediaPause"/>
            <attr name="SP_MediaSkipForward"/>
            <attr name="SP_MediaSkipBackward"/>
            <attr name="SP_MediaSeekForward"/>
            <attr name="SP_MediaSeekBackward"/>
            <attr name="SP_MediaVolume"/>
            <attr name="SP_MediaVolumeMuted"/>
            <attr name="SP_DirLinkOpenIcon"/>
            <attr name="SP_LineEditClearButton"/>
            <attr name="SP_DialogYesToAllButton"/>
            <attr name="SP_DialogNoToAllButton"/>
            <attr name="SP_DialogSaveAllButton"/>
            <attr name="SP_DialogAbortButton"/>
            <attr name="SP_DialogRetryButton"/>
            <attr name="SP_DialogIgnoreButton"/>
            <attr name="SP_RestoreDefaultsButton"/>
            <attr name="SP_CustomBase"/>
        </class>
        <class path="PyQt6.QtWidgets.QStyle.Stateflag">
            <attr name="State_None"/>
            <attr name="State_Enabled"/>
            <attr name="State_Raised"/>
            <attr name="State_Sunken"/>
            <attr name="State_Off"/>
            <attr name="State_NoChange"/>
            <attr name="State_On"/>
            <attr name="State_DownArrow"/>
            <attr name="State_Horizontal"/>
            <attr name="State_HasFocus"/>
            <attr name="State_Top"/>
            <attr name="State_Bottom"/>
            <attr name="State_FocusAtBorder"/>
            <attr name="State_AutoRaise"/>
            <attr name="State_MouseOver"/>
            <attr name="State_UpArrow"/>
            <attr name="State_Selected"/>
            <attr name="State_active"/>
            <attr name="State_Open"/>
            <attr name="State_Children"/>
            <attr name="State_Item"/>
            <attr name="State_Sibling"/>
            <attr name="State_Editing"/>
            <attr name="State_KeyboardFocusChange"/>
            <attr name="State_ReadOnly"/>
            <attr name="State_Window"/>
            <attr name="State_Small"/>
            <attr name="State_Mini"/>
        </class>
        <class path="PyQt6.QtWidgets.QStyle.StyleHint">
            <attr name="SH_EtchDisabledText"/>
            <attr name="SH_DitherDisabledText"/>
            <attr name="SH_ScrollBar_MiddleclickAbsolutePosition"/>
            <attr name="SH_ScrollBar_ScrollWhenPointerLeavesControl"/>
            <attr name="SH_TabBar_SelectMouseType"/>
            <attr name="SH_TabBar_Alignment"/>
            <attr name="SH_Header_ArrowAlignment"/>
            <attr name="SH_Slider_snapToValue"/>
            <attr name="SH_Slider_SloppyKeyEvents"/>
            <attr name="SH_ProgressDialog_CenterCancelButton"/>
            <attr name="SH_ProgressDialog_TextLabelAlignment"/>
            <attr name="SH_PrintDialog_RightAlignButtons"/>
            <attr name="SH_MainWindow_SpaceBelowMenuBar"/>
            <attr name="SH_FontDialog_SelectAssociatedText"/>
            <attr name="SH_Menu_AllowactiveAndDisabled"/>
            <attr name="SH_Menu_SpaceactivatesItem"/>
            <attr name="SH_Menu_SubMenuPopupDelay"/>
            <attr name="SH_ScrollView_FrameonlyAroundContents"/>
            <attr name="SH_MenuBar_AltKeyNavigation"/>
            <attr name="SH_ComboBox_ListMouseTracking"/>
            <attr name="SH_Menu_MouseTracking"/>
            <attr name="SH_MenuBar_MouseTracking"/>
            <attr name="SH_ItemView_ChangeHighlightOnFocus"/>
            <attr name="SH_Widget_Shareactivation"/>
            <attr name="SH_Workspace_FillSpaceonMaximize"/>
            <attr name="SH_ComboBox_Popup"/>
            <attr name="SH_TitleBar_NoBorder"/>
            <attr name="SH_BlinkCursorWhenTextSelected"/>
            <attr name="SH_RichText_FullWidthSelection"/>
            <attr name="SH_Menu_Scrollable"/>
            <attr name="SH_GroupBox_TextLabelVerticalAlignment"/>
            <attr name="SH_GroupBox_TextLabelColor"/>
            <attr name="SH_Menu_SloppySubMenus"/>
            <attr name="SH_Table_GridLineColor"/>
            <attr name="SH_LineEdit_PasswordCharacter"/>
            <attr name="SH_DialogButtons_DefaultButton"/>
            <attr name="SH_ToolBox_SelectedPageTitleBold"/>
            <attr name="SH_TabBar_PreferNoArrows"/>
            <attr name="SH_ScrollBar_LeftClickAbsolutePosition"/>
            <attr name="SH_Underlineshortcut"/>
            <attr name="SH_SpinBox_AnimateButton"/>
            <attr name="SH_SpinBox_KeyPressautorepeatRate"/>
            <attr name="SH_SpinBox_ClickautorepeatRate"/>
            <attr name="SH_Menu_FillScreenWithScroll"/>
            <attr name="SH_ToolTipLabel_Opacity"/>
            <attr name="SH_DrawMenuBarSeparator"/>
            <attr name="SH_TitleBar_ModifyNotification"/>
            <attr name="SH_Button_FocusPolicy"/>
            <attr name="SH_MessageBox_UseBorderForButtonSpacing"/>
            <attr name="SH_TitleBar_AutoRaise"/>
            <attr name="SH_ToolButton_PopupDelay"/>
            <attr name="SH_FocusFrame_Mask"/>
            <attr name="SH_RubberBand_Mask"/>
            <attr name="SH_WindowFrame_Mask"/>
            <attr name="SH_SpinControls_DisableonBounds"/>
            <attr name="SH_Dial_BackgroundRole"/>
            <attr name="SH_ComboBox_LayoutDirection"/>
            <attr name="SH_ItemView_EllipsisLocation"/>
            <attr name="SH_ItemView_ShowDecorationSelected"/>
            <attr name="SH_ItemView_activateItemOnSingleclick"/>
            <attr name="SH_ScrollBar_ContextMenu"/>
            <attr name="SH_ScrollBar_RollBetweenButtons"/>
            <attr name="SH_Slider_StopMouseOverSlider"/>
            <attr name="SH_Slider_AbsoluteSetButtons"/>
            <attr name="SH_Slider_PageSetButtons"/>
            <attr name="SH_Menu_KeyboardSearch"/>
            <attr name="SH_TabBar_ElideMode"/>
            <attr name="SH_DialogButtonLayout"/>
            <attr name="SH_ComboBox_PopupFrameStyle"/>
            <attr name="SH_MessageBox_TextInteractionflags"/>
            <attr name="SH_DialogButtonBox_ButtonsHaveIcons"/>
            <attr name="SH_MessageBox_CenterButtons"/>
            <attr name="SH_Menu_SelectionWrap"/>
            <attr name="SH_ItemView_MovementWithoutUpdatingSelection"/>
            <attr name="SH_ToolTip_Mask"/>
            <attr name="SH_FocusFrame_AboveWidget"/>
            <attr name="SH_TextControl_FocusIndicatorTextCharFormat"/>
            <attr name="SH_WizardStyle"/>
            <attr name="SH_ItemView_ArrowKeysnavigateIntoChildren"/>
            <attr name="SH_Menu_Mask"/>
            <attr name="SH_Menu_flashTriggeredItem"/>
            <attr name="SH_Menu_FadeOutOnHide"/>
            <attr name="SH_SpinBox_ClickautorepeatThreshold"/>
            <attr name="SH_ItemView_PaintAlternatingRowColorsForEmptyArea"/>
            <attr name="SH_FormLayoutWrapPolicy"/>
            <attr name="SH_tabwidget_DefaultTabPosition"/>
            <attr name="SH_ToolBar_Movable"/>
            <attr name="SH_FormLayoutFieldGrowthPolicy"/>
            <attr name="SH_FormLayoutFormAlignment"/>
            <attr name="SH_FormLayoutLabelAlignment"/>
            <attr name="SH_ItemView_DrawDelegateFrame"/>
            <attr name="SH_TabBar_CloseButtonPosition"/>
            <attr name="SH_DockWidget_ButtonsHaveFrame"/>
            <attr name="SH_ToolButtonStyle"/>
            <attr name="SH_RequestsoftwareInputPanel"/>
            <attr name="SH_ListViewExpand_SelectMouseType"/>
            <attr name="SH_ScrollBar_Transient"/>
            <attr name="SH_Menu_SupportsSections"/>
            <attr name="SH_ToolTip_WakeUpDelay"/>
            <attr name="SH_ToolTip_FallAsleepDelay"/>
            <attr name="SH_Widget_Animate"/>
            <attr name="SH_Splitter_OpaqueResize"/>
            <attr name="SH_LineEdit_PasswordMaskDelay"/>
            <attr name="SH_TabBar_ChangeCurrentDelay"/>
            <attr name="SH_Menu_SubMenuUniDirection"/>
            <attr name="SH_Menu_SubMenuUniDirectionFailCount"/>
            <attr name="SH_Menu_SubMenuSloppySelectOtheractions"/>
            <attr name="SH_Menu_SubMenuSloppyCloseTimeout"/>
            <attr name="SH_Menu_SubMenuResetWhenReenteringParent"/>
            <attr name="SH_Menu_SubMenuDontStartSloppyOnLeave"/>
            <attr name="SH_ItemView_ScrollMode"/>
            <attr name="SH_TitleBar_ShowToolTipsOnButtons"/>
            <attr name="SH_Widget_Animation_Duration"/>
            <attr name="SH_ComboBox_AllowWheelScrolling"/>
            <attr name="SH_SpinBox_ButtonsInsideFrame"/>
            <attr name="SH_SpinBox_StepModifier"/>
            <attr name="SH_CustomBase"/>
            <attr name="SH_TabBar_AllowWheelScrolling"/>
        </class>
        <class path="PyQt6.QtWidgets.QStyle.SubControl">
            <attr name="SC_None"/>
            <attr name="SC_ScrollBarAddLine"/>
            <attr name="SC_ScrollBarSubLine"/>
            <attr name="SC_ScrollBarAddPage"/>
            <attr name="SC_ScrollBarSubPage"/>
            <attr name="SC_ScrollBarFirst"/>
            <attr name="SC_ScrollBarLast"/>
            <attr name="SC_ScrollBarSlider"/>
            <attr name="SC_ScrollBarGroove"/>
            <attr name="SC_TitleBarLabel"/>
            <attr name="SC_CustomBase"/>
            <attr name="SC_All"/>
        </class>
        <class path="PyQt6.QtWidgets.QStyle.SubElement">
            <attr name="SE_PushButtonContents"/>
            <attr name="SE_PushButtonFocusRect"/>
            <attr name="SE_CheckBoxIndicator"/>
            <attr name="SE_CheckBoxContents"/>
            <attr name="SE_CheckBoxFocusRect"/>
            <attr name="SE_CheckBoxClickRect"/>
            <attr name="SE_RadioButtonIndicator"/>
            <attr name="SE_RadioButtonContents"/>
            <attr name="SE_RadioButtonFocusRect"/>
            <attr name="SE_RadioButtonClickRect"/>
            <attr name="SE_ComboBoxFocusRect"/>
            <attr name="SE_SliderFocusRect"/>
            <attr name="SE_ProgressBarGroove"/>
            <attr name="SE_ProgressBarContents"/>
            <attr name="SE_ProgressBarLabel"/>
            <attr name="SE_ToolBoxTabContents"/>
            <attr name="SE_HeaderLabel"/>
            <attr name="SE_HeaderArrow"/>
            <attr name="SE_tabwidgetTabBar"/>
            <attr name="SE_tabwidgetTabPane"/>
            <attr name="SE_tabwidgetTabContents"/>
            <attr name="SE_tabwidgetLeftCorner"/>
            <attr name="SE_tabwidgetRightCorner"/>
            <attr name="SE_TabBarTearIndicator"/>
            <attr name="SE_TreeViewDisclosureItem"/>
            <attr name="SE_LineEditContents"/>
            <attr name="SE_FrameContents"/>
            <attr name="SE_DockWidgetcloseButton"/>
            <attr name="SE_DockWidgetFloatButton"/>
            <attr name="SE_DockWidgetTitleBarText"/>
            <attr name="SE_DockWidgetIcon"/>
            <attr name="SE_CheckBoxLayoutItem"/>
            <attr name="SE_ComboBoxLayoutItem"/>
            <attr name="SE_DateTimeEditLayoutItem"/>
            <attr name="SE_LabelLayoutItem"/>
            <attr name="SE_ProgressBarLayoutItem"/>
            <attr name="SE_PushButtonLayoutItem"/>
            <attr name="SE_RadioButtonLayoutItem"/>
            <attr name="SE_SliderLayoutItem"/>
            <attr name="SE_SpinBoxLayoutItem"/>
            <attr name="SE_ToolButtonLayoutItem"/>
            <attr name="SE_FrameLayoutItem"/>
            <attr name="SE_GroupBoxLayoutItem"/>
            <attr name="SE_tabwidgetLayoutItem"/>
            <attr name="SE_ItemViewItemCheckIndicator"/>
            <attr name="SE_ItemViewItemDecoration"/>
            <attr name="SE_ItemViewItemText"/>
            <attr name="SE_ItemViewItemFocusRect"/>
            <attr name="SE_TabBarTabLeftButton"/>
            <attr name="SE_TabBarTabRightButton"/>
            <attr name="SE_TabBarTabText"/>
            <attr name="SE_ShapedFrameContents"/>
            <attr name="SE_ToolBarHandle"/>
            <attr name="SE_TabBarScrollLeftButton"/>
            <attr name="SE_TabBarScrollRightButton"/>
            <attr name="SE_TabBarTearIndicatorRight"/>
            <attr name="SE_PushButtonBevel"/>
            <attr name="SE_CustomBase"/>
        </class>
    </class>

我从未使用过 QStyle,但在属性中出现了 19 次标题栏,所以我猜它是相关的,而且它似乎确实能够实现我想要的,但我不知道如何使用它。

那么如何自定义 QMessageBox 的标题栏?

likelele 回答:如何在 PyQt6 中自定义 QMessageBox 的标题栏?

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/73833.html

大家都在问