0

キューから人の名前のリストを取得し、各人について、addWidget() 関数を使用して QGridLayout に名前のチェックボックスを配置したいと考えています。項目を QListView に正常に配置できますが、新しい行を作成するのではなく、互いの上に書き込むだけです。どうすればこれを修正できるかについて誰か考えがありますか?

self.chk_People = QtGui.QListView()
items = self.jobQueue.getPeopleOffQueue()

for item in items:
    QtGui.QCheckBox('%s' % item, self.chk_People)

self.jobQueue.getPeopleOffQueue() は ['Bob', 'Sally', 'Jimmy'] のようなものを返します。

4

2 に答える 2

1

この行:

QtGui.QCheckBox('%s' % item, self.chk_People)

リストビューにチェックボックスを追加せず、リストビューを親として作成するだけで、大きな違いがあります。

リスト ビューを使用する最も簡単な方法は、QListWidgetコンビニエンス クラスです。そのためには、チェックボックスを のインスタンスとして作成し、リスト ウィジェットでQListWidgetItem使用addItemして実際に追加します。

それらをグリッド レイアウトに追加する際に問題がありましたか? 通常、チェックボックスの数が少ない場合は、グリッド レイアウトの方が適している可能性があります。これは、アプリをどのように表示するかによって異なります。しかし、そのようなオブジェクトがたくさんある場合は、リスト ウィジェット/ビューが最適です。

于 2009-10-30T05:21:34.893 に答える
0

PyQtでの解決策はわかりませんが、従う必要のある構造は次のとおりです。QListViewは必要なことを実行でき、個別のチェックボックスを作成する必要はありません。QAbstractItemModelまたはのサブクラスを作成しますQStandardItemModel(実行するコーディングの量に応じて)メソッドをオーバーライドして、を含むflags()適切なフラグを返します。メソッドにチェックボックスを含める列を追加し、チェックボックスを配置する列のメソッドに表示するには、の チェック状態を返します。 Qt::ItemIsUserCheckablecolumncount()dataQt::CheckedQt::UncheckedQt::CheckStateRole

これは、データの追加に使用でき、モデルを作成する必要がないQListWidget場所を使用して実行することもできます。QListWidgetItemモデルをサブクラス化せずにQListWidgetItem使用できますsetFlags()setData(QVariant(bool, Qt::CheckStateRole)

于 2009-10-30T02:53:01.630 に答える