質問

キューから人の名前のリストを取得し、各人について、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']のようなものを返します。

役に立ちましたか?

解決

この行:

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

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

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

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

他のヒント

PyQtで解決策を説明することはできませんが、従う必要がある構造は次のとおりです。 QListViewは必要なことを実行できます。別個のチェックボックスを作成する必要はありません。 QAbstractItemModel または QStandardItemModel (コーディングの量に応じて)< code> flags()メソッドを使用して、適切なフラグを返す含む Qt :: ItemIsUserCheckable columncount()メソッドで、チェックボックスを含めるための追加の列と data チェックボックスを表示する列のメソッドは、 Qt :: CheckStateRoleのチェック状態 Qt :: Checked Qt :: Unchecked を返します

これは、 QListWidget を使用しても実現できます。データを追加するために QListWidgetItem を使用できます。モデルを作成する必要があります。 QListWidgetItem では、モデルをサブクラス化せずに setFlags()および setData(QVariant(bool、Qt :: CheckStateRole)を使用できます

>
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top