如何刪除QTreeWidgetItem
的背景色,或將其重置爲默認值?PyQt:重置或刪除QTreeWidgetItem的背景色
treeWidgetItem.setBackgroundColor(0, QtGui.QColor('green'))
如何刪除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