QWidgetListのアイテムに1つのアイコンを割り当てる方法を知っています。複数のアイコンを割り当てることはできますか?添付した画像のように、「a」に2つ目のアイコン(緑色のアイコン)を追加して、特定の条件で削除できるようにしたいと思います。以下のコードは、私が達成しようとしていることのほんの一例です。
from PySide2.QtCore import *
from PySide2.QtGui import *
from PySide2.QtWidgets import *
class MainWindow(QWidget):
def __init__(self):
QWidget.__init__(self)
self.orange = QIcon('orangeIconPath')
self.green = QIcon('greenIconPath')
self.layout=QVBoxLayout()
self.setLayout(self.layout)
self.widget1=QWidget()
self.layout.addWidget(self.widget1)
self.layout1=QVBoxLayout()
self.widget1.setLayout(self.layout1)
self.layout1.addWidget(QLabel("First layout"))
self.qlist = QListWidget()
self.layout1.addWidget(self.qlist)
items = ['a','b','c']
self.qlist.addItems(items)
#This is where I'm struggling when it's more than 1 icon
#enter a condition to check against each item and assign icon/s to the item when condition is met
self.show()
いいえ、QListWidget
少なくともそれ自体ではありません。
ただし、利用できるオプションは多数あります。
この場合の私の個人的な好みはを使用することQTreeWidget
です。AQTreeWidget
はQListWidget
、複数の列を持つaと非常によく似ているため、それらの列にアイコンを配置できます。列幅を構成するためにそれをいじる必要があり、ヘッダーバーが必要ない場合は削除する必要がありますが、特に難しいことではありません(必要に応じて追加のアドバイスを提供させていただきます) 。QTableWidget
同じ目的で使用することもできますが、リストのように動作させるには、より多くの構成が必要です。
もう1つのオプションは、複数のアイコンを並べて新しいアイコンをプログラムで生成し、1つの画像のみを設定することです。
大幅に高度なのは、ビューのデリゲートを作成することです。これは多くの作業であるため、ここでは詳しく説明しませんが、最も制御しやすくなります。
注意点として、私は使用しないことをお勧めしますQListWidget
/ QTreeWidget
/QTableWidget
ビュークラスを。彼らは、真拾うことは本当に簡単ですが、それは実際にモデル・ビュー使用に慣れる価値があるQListView
/ QTreeView
/QTableView
クラスを。独自のQAbstractListModel
またはQAbstractTableModel
サブクラスを作成するのは非常に簡単です。またはQStringListModel
、単純なリストに使用したりQStandardItemModel
、2つのタイプのビュークラス間の足がかりとして使用したりすることもできます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加