2016-10-09 8 views

ответ

1

Это можно сделать довольно легко с помощью простого пользовательского элемента-делегата:

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) 

Чтобы удалить значок из элемента, просто установите его в нуль QIcon:

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

Работает как шарм! Спасибо за тщательный ответ! – Yasin

1

Для этого вам необходимо предоставить свой собственный делегат, который рисует данные элемента, как вы хотите.

См. QAbstractItemView::setItemDelegate().

Возможно, вы используете QStyledItemDelegate в качестве базового класса и пусть его paint() обрабатывает все аспекты, кроме Qt::DecorationRole (значок), и рисуйте это самостоятельно.

+0

я вижу. Спасибо за ответ. Я еще не создал пользовательский делегат, поэтому я не уверен, как подойти к нему в PyQt, есть ли ссылка, которую я могу посмотреть? – Yasin

+0

Я сам не использовал PyQt, но я предполагаю, что вы используете стандартный синтаксис подкласса Python, а затем перезаписываете метод рисования с помощью такой функции, как «def paint (self, painter, option, index):' –

+0

Я думаю Я нашел хороший пример. http://www.saltycrane.com/blog/2008/01/pyqt4-qitemdelegate-example-with/ Но в моем Qt Designer создается мой виджет списка, я не уверен, как я могу легко заменить его на делегировать версию! – Yasin

 Смежные вопросы

  • Нет связанных вопросов^_^