PyQt:重置或删除QTreeWidgetItem的背景色
如何删除QTreeWidgetItem
的背景色,或将其重置为默认值?PyQt:重置或删除QTreeWidgetItem的背景色
treeWidgetItem.setBackgroundColor(0, QtGui.QColor('green'))
我不知道是否有与setBackgroundColor
做的任何方式,但我会用setStyleSheet
。
样式表的工作与每个QtGui
小部件,并更容易使用整体。
如果你想设置QTreeWidget
背景颜色绿色:如果你想重置 QTreeWidget的样式表
self.TreeWidgetItem = QtGui.QTreeWidgetItem()
self.TreeWidgetItem.setStyleSheet("background-color: green;")
,只需键入:
self.TreeWidgetItem.setStyleSheet("")
这将任何小部件的颜色重置为默认值,而不会给出任何例外。
另外这是一个很好的做法,使用qt样式表系统,它很容易,并有很多的特权。
默认值可能取决于操作系统和其他因素。
既然你
treeWidgetItem.setBackgroundColor(0, QtGui.QColor('green'))
改变背景颜色,您可以和读出之前
default_tree_widget_item_brush = treeWidgetItem.background(column)
默认的画笔和设置回本以后,当你想返回默认值。
旁注:在Qt 5.6有似乎没有方法setBackgroundColor
为QTreeWidgetItems
,只有setBackground
。所以解决方案可能会略微取决于Qt的使用版本。
我成功通过将其设置为透明白色来移除背景颜色。
treeWidgetItem.setBackgroundColor(0, QtGui.QColor(255, 255, 255, 0))
这也适用于黑暗的桌面主题。
但由于setBackgroundColor
方法已过时我现在使用:
treeWidgetItem.setBackground(0, QtGui.QBrush(QtGui.QColor(255, 255, 255, 0)))
你可以得到的背景颜色与此:
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.setData(0, QtCore.Qt.BackgroundRole, None)
值得一提的是,当后台有不被设置,background()
方法实际上将返回a nullQBrush
而不是None
。这是因为底层的Qt代码做到这一点:
return qvariant_cast<QBrush>(data(column, Qt::BackgroundRole))
所以它需要一个空QVariant
(这相当于None
,在PyQt的术语),并将它转换为空QBrush
- 这意味着它不代表默认的系统颜色,并且不能用于重置原始值。
你是如何设定的? – Trilarion
treeWidgetItem.setBackgroundColor(0,QtGui.QColor('green'))# moDong
你为什么需要奋斗?你只需要'treeWidgetItem.setBackgroundColor(0,QtGui.QColor('white'))' – ShellRox