我必须编辑QColorDialog小部件内部组件的样式表

时间:2020-06-23 20:46:30

标签: python pyqt pyqt5 qtstylesheets qcolordialog

我可以通过下面给出的样式表代码设置QColorDialog子项的样式表,如旋转框,标签和按钮

QColorDialog QPushButton 
{
border : 2px solid black;
background : green;
}

但是我无法设置每个内部组件的样式表,我在文档中进行了搜索,但没有提供样式颜色对话框的描述,尽管对于QCalendarWidget之类的小部件,我们使用了 QCalendarWidget QWidget#qt_calendar_navigationbar 设置日历工具栏的样式,我认为每个组件应有特定的名称

1 个答案:

答案 0 :(得分:0)

虽然 some 复杂的窗口小部件具有设置了对象名称属性的子窗口小部件(例如在QCalendarWidget中),但并非所有Qt对象都必须具有对象名称;我相信,出于某种原因,只要需要,开发人员就只为特定的子窗口小部件设置这些名称。

看着source code of QColorDialog,没有设置对象名称的窗口小部件,因此您只能使用findChildfindChildren访问它们,并分别设置样式表手动设置其对象名称。

请注意,QColorDialog是“私下”创建的,无法直接访问其小部件,并且其结构在不同版本的Qt中可能会有所不同。
还请考虑该对话框中的以下窗口小部件是私有的,而不是标准窗口小部件(因此您无法以任何方式访问它们):

  • 标准色表
  • 自定义颜色列表
  • 拾色器
  • 颜色预览

唯一的“常数”可能是旋转框,html颜色QLineEdit和对话框按钮框(显然,假设您没有设置NoButtons选项)。

假设总是以相同的顺序创建旋转框(但是请记住,您不能认为这是理所当然的!),您可以浏览布局,设置它们的对象名称,然后使用{ {1}}选择器,可用于根据对象的名称来命名特定的窗口小部件。您也可以改用#

在以下代码中,我将“确定”按钮设置为绿色,将“取消”按钮设置为红色,同时还设置了每个微调框的背景和HTML彩色行编辑:

dialog.findChildren(QtWidgets.QSpinBox)

screenshot of the stylesheet applied to the dialog