我在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)


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

编辑:我向设计师添加了颜色样式表,它也杀死了我的复选框。我的目标仍然是相同的,使复选框更明显。

最佳答案

由于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)


我希望这可以对使用样式表的人有所帮助。

关于python - 更改QTreeWidget中复选框的样式而不影响Maya中的复选标记吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54655382/

10-16 18:23