我该如何移除或重置QTreeWidgetItem
的背景颜色?
treeWidgetItem.setBackgroundColor(0, QtGui.QColor('green'))
我该如何移除或重置QTreeWidgetItem
的背景颜色?
treeWidgetItem.setBackgroundColor(0, QtGui.QColor('green'))
treeWidgetItem.setData(0, QtCore.Qt.BackgroundRole, None)
background()
方法实际上会返回一个空的QBrush
而不是None
。这是因为底层的Qt代码做了这样的处理:return qvariant_cast<QBrush>(data(column, Qt::BackgroundRole))
因此,它使用了一个空的QVariant
(在PyQt术语中等同于None
),并将其转换为一个空的QBrush
- 这意味着它不代表默认的系统颜色,并且不能用于重置原始值。
我不确定是否有使用setBackgroundColor
的方法,但我会使用setStyleSheet
。
StyleSheet
适用于每个QtGui
窗口小部件,并且总体上更易于使用。
如果要将QTreeWidget
的背景颜色设置为绿色:
self.TreeWidgetItem = QtGui.QTreeWidgetItem()
self.TreeWidgetItem.setStyleSheet("background-color: green;")
如果您想要重置 QTreeWidget 的样式表,只需输入以下内容:
self.TreeWidgetItem.setStyleSheet("")
这将重置任何小部件的颜色为默认值,不会产生任何异常。
此外,使用qt样式表系统是一个好的实践,它易于使用并且有很多优点。
```
```
treeWidgetItem.background(0)
<PySide.QtGui.QBrush(QColor(ARGB 1, 0, 0, 0) , NoBrush ) at 0x00000000EB1F6588>
originalBG = treeWidgetItem.background(0)
# New background
treeWidgetItem.setBackgroundColor(0, QtGui.QColor('green'))
# Old background
treeWidgetItem.setBackgroundColor(0, originalBG)
默认值可能取决于操作系统和其他因素。
由于您更改了背景颜色,因此
treeWidgetItem.setBackgroundColor(0, QtGui.QColor('green'))
在编程中,你也可以读取默认画笔。
default_tree_widget_item_brush = treeWidgetItem.background(column)
并在需要返回默认值时将其设置回来。
我通过将背景颜色设置为透明白色成功地去除了背景颜色。
treeWidgetItem.setBackgroundColor(0, QtGui.QColor(255, 255, 255, 0))
这也适用于深色桌面主题。
但由于setBackgroundColor
方法已被弃用,我现在使用:
treeWidgetItem.setBackground(0, QtGui.QBrush(QtGui.QColor(255, 255, 255, 0)))
treeWidgetItem.setBackgroundColor(0, QtGui.QColor('white'))
即可。 - ShellRoxsetStyleSheet
方法(已在 Qt 5.7 中测试)。 - Patrizio Bekerle