23

アイテムのリストを表示する必要があるとしましょう。各項目には、QPushButton、画像、およびいくつかのテキストが含まれています。ユーザーがボタンをクリックすると、何かが起こるはずです (つまり、シグナルを取得する必要があります)。Qtでこれを実装する正しい方法は何ですか?

少し読んだ後、QListWidget と QListWidgetItem を使用すれば、これを実現できることがわかりました。必要に応じて各 QListWidgetItem をサブクラス化し、リスト ウィジェットに設定できます。

ただし、より適切なアプローチ (モデル ビュー アプローチ) は、QItemDelegate と組み合わせて QlistView を使用することであるとも読みました。しかし、QItemDelegate を使用している場合、ウィジェットのみをペイントできるようです。プッシュボタンイベントを取得するにはどうすればよいですか?

この巨大な投稿で申し訳ありません。QListWidget/QListViewをいつ使用するかという概念全体について、私はちょっと混乱しています。

4

2 に答える 2

18

QListWidgetは基本的に のカスタマイズ バージョンでありQListView、リスト ウィジェットの標準的なケース用に設計されています。これは、リスト内の画像またはテキスト項目を表示するだけで、基になるモデルとの関係が単純な場合に使用します。

QListWidgetそれに関連付けられたクラスQListWidgetItemを使用すると、アイテムの挿入と削除を非常に簡単に行うことができます。ただし、 を挿入する場合はQPushButtonsこれを使用できないQListViewため、特定のインデックスのウィジェットを設定するために と その (継承された) メソッドを使用することもできます。

シグナルに関しては、QPushButtons を作成するので、単に使用します

QObject::connect(my_button, SIGNAL(clicked()),...) 

それに対処する。

于 2011-05-15T00:31:43.553 に答える
7

QListWidgetItemMatt の回答とは異なり、qt-project.org のこの投稿で指摘されているように、独自のウィジェットを で使用できるようです: http://qt-project.org/forums/viewthread/17953

これは、表示する項目が少なく、モデル クラスを作成する手間がかからない場合に便利です。

于 2013-11-29T05:37:24.597 に答える