2016-10-09 1 views

Antwort

1

Dies kann ganz leicht mit einem einfachen benutzerdefinierten Element-Delegierten erfolgen:

class ItemDelegate(QtGui.QStyledItemDelegate): 
    def paint(self, painter, option, index): 
     option.decorationPosition = QtGui.QStyleOptionViewItem.Right 
     super(ItemDelegate, self).paint(painter, option, index) 

class MainWindow(QtGui.QMainWindow, Ui_MainWindow): 
    def __init__(self): 
     ... 
     self.delegate = ItemDelegate() 
     self.listWidget.setItemDelegate(self.delegate) 

ein Symbol aus einem Element zu entfernen, es nur auf einen Null gesetzt QIcon:

listItem.setIcon(QtGui.QIcon()) 
+0

wirkt wie ein Zauber auf Sie zutreffen! Danke für die gründliche Antwort! – Yasin

1

Dafür müssen Sie Ihren eigenen Artikeldelegaten bereitstellen, der die Artikeldaten wie gewünscht zeichnet.

Siehe QAbstractItemView::setItemDelegate().

Sie können wahrscheinlich verwenden QStyledItemDelegate als Ihre Basisklasse und lassen Sie ihre paint() alle Aspekte außer der Qt::DecorationRole (das Symbol) behandeln und selbst zeichnen.

+0

ich sehe. Danke für die Antwort. Ich habe noch keinen benutzerdefinierten Delegaten erstellt, daher weiß ich nicht, wie ich ihn in PyQt angehen soll. Gibt es da eine Referenz, die ich mir ansehen kann? – Yasin

+0

Ich habe nicht PyQt mich, aber meine Vermutung ist, verwendet, dass Sie die Standard-Python-Subklassen-Syntax verwenden und dann mit einer Funktion Signatur wie diese 'def malen (self, Maler, Option, Index) die Farbe Methode überschreiben:' –

+0

Ich denke, Ich habe ein gutes Beispiel gefunden. http://www.salzycrane.com/blog/2008/01/pyqt4-qitemdelegate-example-with/ Aber die Sache ist, dass mein Listenwidget in Qt Designer erstellt wird, ich bin mir nicht sicher, wie ich es nahtlos mit dem ersetzen kann Delegierte Version! – Yasin

Verwandte Themen