2016-06-11 5 views
2

Wie entferne ich die Hintergrundfarbe eines QTreeWidgetItem, oder zurücksetzen Sie es auf die Standardeinstellung?PyQt: zurücksetzen oder entfernen Sie die Hintergrundfarbe von QTreeWidgetItem

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

Wie hast du es vorher eingestellt? – Trilarion

+0

treeWidgetItem.setBackgroundColor (0, QtGui.QColor ('grün')) # <- wie das? – moDong

+0

Warum musst du kämpfen? Sie würden einfach 'treeWidgetItem.setBackgroundColor (0, QtGui.QColor ('weiß'))' – ShellRox

Antwort

0

Ich bin nicht sicher, ob es eine Möglichkeit, es mit setBackgroundColor zu tun, aber ich würde setStyleSheet verwenden.

Stylesheet funktioniert mit jedem QtGui Widget und ist insgesamt einfacher zu verwenden.

Wenn Sie die QTreeWidgetHintergrundfarbe auf grün setzen wollen:

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

Wenn Sie wollen das Stylesheet von QTreeWidget zurückgesetzt, dies einfach eingeben:

self.TreeWidgetItem.setStyleSheet("") 

Dies würde Setzen Sie die Farbe jedes Widgets auf die Standardfarbe zurück, ohne Ausnahmen zu geben.

Auch es ist gute Praxis, um qt Stylesheet-System zu verwenden, Es ist einfach und hat eine Menge Vorteile.

0

Der Standardwert kann vom Betriebssystem und anderen Faktoren abhängen.

Da Sie die Hintergrundfarbe mit

geändert
treeWidgetItem.setBackgroundColor(0, QtGui.QColor('green')) 

Sie können auch die Standard-Bürste lesen, bevor

default_tree_widget_item_brush = treeWidgetItem.background(column) 

und setzen Sie ihn auf diese später wieder auf, wenn Sie die zurückkehren möchten Standardwerte.


Nebenbei bemerkt: In Qt 5.6 scheint es keine Methode setBackgroundColor für QTreeWidgetItems zu sein, nur setBackground. Die Lösung kann also leicht von der verwendeten Version von Qt abhängen.

0

Ich habe die Hintergrundfarbe erfolgreich entfernt, indem ich sie auf ein transparentes Weiß setzte.

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

Das funktioniert auch mit dunklen Desktop-Themen.

Da aber die setBackgroundColor Methode jetzt veraltet ich benutze:

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

Sie können die Hintergrundfarbe mit diesem erhalten:

treeWidgetItem.background(0) 

Rückkehr so ​​etwas wie:

<PySide.QtGui.QBrush(QColor(ARGB 1, 0, 0, 0) , NoBrush) at 0x00000000EB1F6588> 

Jetzt Legen Sie das in eine Zeichenfolge, bevor Sie Ihre Änderung anwenden, und Sie haben Ihre Antwort.

originalBG = treeWidgetItem.background(0) 

# New background 
treeWidgetItem.setBackgroundColor(0, QtGui.QColor('green')) 

# Old background 
treeWidgetItem.setBackgroundColor(0, originalBG) 
0

Die richtige Methode ist, die zugrunde liegenden Daten zu löschen, wie folgt aus:

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

Es ist erwähnenswert, dass, wenn ein Hintergrund hat nicht gesetzt worden ist, die background() Methode tatsächlich Rückkehr a NullQBrush eher als None. Dies, weil der zugrunde liegende Qt Code tut dies:

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

So dauert es eine Null-QVariant (die None entspricht, in PyQt Bedingungen) und wirft sie auf ein Null-QBrush - das heißt, es nicht die darstellt Standard-Systemfarben, und kann nicht verwendet werden, setzen Sie die ursprünglichen Werte zurück.

Verwandte Themen