QlistWidgetでは、listItem.setIcon(qIcon)
を使用すると、アイコンがリスト項目の左側に置かれます。下に示すように、どうすれば右側に表示させることができますか?またPyQt:QListWidget項目の右側にアイコンを追加
別の質問。アイテムからアイコンを削除するにはどうすればよいですか?
QlistWidgetでは、listItem.setIcon(qIcon)
を使用すると、アイコンがリスト項目の左側に置かれます。下に示すように、どうすれば右側に表示させることができますか?またPyQt:QListWidget項目の右側にアイコンを追加
別の質問。アイテムからアイコンを削除するにはどうすればよいですか?
これは、単純なカスタムアイテムデリゲートで非常に簡単に行うことができます。
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())
このためには、必要に応じてアイテムデータを描画する独自のアイテムデリゲートを用意する必要があります。
QAbstractItemView::setItemDelegate()
を参照してください。
QStyledItemDelegate
を基本クラスとして使用し、paint()
がQt::DecorationRole
(アイコン)以外のすべての部分を処理し、自分自身を描画させることができます。
私が参照してください。答えをありがとう。私はカスタムのデリゲートを作成していないので、PyQtでそれにアプローチする方法がわかりません。参照できるように見えますか? – Yasin
私はPyQtを自分で使用していませんが、標準Pythonの構文をサブクラス化して、この 'def paint(self、painter、option、index):' –
のような関数シグネチャでpaintメソッドを上書きすると思います。私は良い例を見つけました。 http://www.saltycrane.com/blog/2008/01/pyqt4-qitemdelegate-example-with/しかし、私のリストウィジェットはQtデザイナーで作成されているので、どのようにシームレスにデリゲート版! – Yasin
魅力的な作品です!徹底的な答えをありがとう! – Yasin