更改QTreeWidget中复选框的样式而不影响Maya中的复选标记吗?

时间:2019-02-12 17:15:27

标签: python pyqt5 maya

我在QtWidgets.QTreeWidget()中将带有孩子的三态复选框样式化时遇到麻烦

我正在尝试使用:

css ='''
QTreeView {background-color: #1e1e1e;} 
QTreeView::indicator {border: 1px solid white;}
'''
self.file_tree.setStyleSheet(css)

背景颜色变化良好。但是,一旦添加实线边框或尝试更改复选框的背景颜色,三态检查将不再可见。旧样式不再适用。我没有访问权限,或者不知道如何访问QT资源,因为Maya具有不同图像的自己的版本。即复选框png。

使用以下命令添加树的父目录:

parent_widget = DirectoryTreeWidgetItem(parent_widget)
parent_widget.setText(0, self.base_name)
parent_widget.setFlags(parent_widget.flags() | QtCore.Qt.ItemIsTristate | QtCore.Qt.ItemIsUserCheckable)

通过以下方式添加QTreeWidetItems:

# add the items
for child_file in self.child_files:
    # child = QtWidgets.QTreeWidgetItem(parent_widget)
    child = AssetTreeWidgetItem(parent_widget)
    child.setFlags(child.flags() | QtCore.Qt.ItemIsUserCheckable)
    child.setText(0, os.path.basename(child_file))
    child.setCheckState(0, QtCore.Qt.Unchecked)
    child.setFilePath(child_file)

我希望更改边框和/或背景颜色,以使框更可见,而不是与深色背景树视图融合。

编辑:我向设计师添加了颜色样式表,这也取消了我的复选框。我的目标仍然是相同,使复选框更加可见。

1 个答案:

答案 0 :(得分:1)

由于setStyleSheet覆盖了当前样式,因此我可以使用QtGui.QPalette()来获得所需的结果:

    file_tree_palette = QtGui.QPalette()
    file_tree_palette.setColor(QtGui.QPalette.Window, QtGui.QColor(255, 255, 255))
    file_tree_palette.setColor(QtGui.QPalette.Base, QtGui.QColor(30, 30, 30))
    file_tree_palette.setColor(QtGui.QPalette.Highlight, QtGui.QColor(93, 93, 93))
    self.file_tree.setPalette(file_tree_palette)

我希望这可以帮助正在使用样式表的人。