2016-06-11 60 views
2

如何删除QTreeWidgetItem的背景色,或将其重置为默认值?PyQt:重置或删除QTreeWidgetItem的背景色

treeWidgetItem.setBackgroundColor(0, QtGui.QColor('green')) 
+0

你是如何设定的? – Trilarion

+0

treeWidgetItem.setBackgroundColor(0,QtGui.QColor('green'))#< - 那样? – moDong

+0

你为什么需要奋斗?你只需要'treeWidgetItem.setBackgroundColor(0,QtGui.QColor('white'))' – ShellRox

回答

0

我不知道是否有与setBackgroundColor做的任何方式,但我会用setStyleSheet

样式表的工作与每个QtGui小部件,并更容易使用整体。

如果你想设置QTreeWidget背景颜色绿色:如果你想重置 QTreeWidget的样式表

self.TreeWidgetItem = QtGui.QTreeWidgetItem() 
    self.TreeWidgetItem.setStyleSheet("background-color: green;") 

,只需键入:

self.TreeWidgetItem.setStyleSheet("") 

这将任何小部件的颜色重置为默认值,而不会给出任何例外。

另外这是一个很好的做法,使用qt样式表系统,它很容易,并有很多的特权。

0

默认值可能取决于操作系统和其他因素。

既然你

treeWidgetItem.setBackgroundColor(0, QtGui.QColor('green')) 

改变背景颜色,您可以和读出之前

default_tree_widget_item_brush = treeWidgetItem.background(column) 

默认的画笔和设置回本以后,当你想返回默认值。


旁注:在Qt 5.6有似乎没有方法setBackgroundColorQTreeWidgetItems,只有setBackground。所以解决方案可能会略微取决于Qt的使用版本。

0

我成功通过将其设置为透明白色来移除背景颜色。

treeWidgetItem.setBackgroundColor(0, QtGui.QColor(255, 255, 255, 0)) 

这也适用于黑暗的桌面主题。

但由于setBackgroundColor方法已过时我现在使用:

treeWidgetItem.setBackground(0, QtGui.QBrush(QtGui.QColor(255, 255, 255, 0))) 
1

你可以得到的背景颜色与此:

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) 
0

正确的方法是清除底层数据,就像这样:

treeWidgetItem.setData(0, QtCore.Qt.BackgroundRole, None) 

值得一提的是,当后台有被设置,background()方法实际上将返回a nullQBrush而不是None。这是因为底层的Qt代码做到这一点:

return qvariant_cast<QBrush>(data(column, Qt::BackgroundRole)) 

所以它需要一个空QVariant(这相当于None,在PyQt的术语),并将它转换为空QBrush - 这意味着它代表默认的系统颜色,并且不能用于重置原始值。