2016-06-11 57 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 - 這意味着它代表默認的系統顏色,並且不能用於重置原始值。