QListWidgetとQListWidgetItemについて
Qtフレームワークにおいて、リスト形式でデータを表示するためのウィジェットがQListWidgetです。各リストアイテムはQListWidgetItemクラスで表現されます。
QListWidgetのクラス階層
QListWidgetの継承関係は以下の通りです:
QListWidget → QListView → QAbstractItemView → QAbstractScrollArea → QFrame → QWidget
コンストラクタ
QListWidgetのインスタンス生成には、以下のコンストラクタを使用します:
QListWidget(QWidget *parent = Q_NULLPTR)
parentパラメータで親ウィジェットを指定します。デフォルトはQ_NULLPTRで、その場合はスタンドアロンウィンドウとして動作しますが、実際の開発では通常、親ウィジェット(例:QWidget)を指定して、その子コントロールとして利用します。
リストアイテムの管理:QListWidgetItem
QListWidget内の各アイテムはQListWidgetItemのインスタンスです。デフォルトでは1行に1アイテムを表示し、テキストやアイコンを設定できます。また、QLabelやQPushButtonなどのウィジェットをアイテムに埋め込むことも可能です。
各アイテムの外観や内容は、以下のメソッドで制御できます:
setIcon()- アイコン設定setText()- テキスト設定setFont()- フォント設定setBackground()- 背景色設定
実装例
以下は、Qt Designerで配置したlistWidgetにアイテムを追加するコード例です:
// アイテムを1つ追加し、中央揃えにする
QListWidgetItem *item = new QListWidgetItem("沁园春.雪--作者:毛主席");
ui->listWidget->addItem(item);
item->setTextAlignment(Qt::AlignCenter);
// 文字列リストを作成し、複数アイテムを一括追加
QStringList lines;
lines << "北国风光,千里冰封,万里雪飘";
lines << "望长城内外,维余莽莽";
lines << "大河上下,顿失滔滔";
ui->listWidget->addItems(lines);
主要なプロパティとメソッド
| メソッド/プロパティ | 説明 |
|---|---|
count() | アイテム数を返す |
currentItem() | 現在選択されているアイテムを返す |
setCurrentRow(int) | 指定行のアイテムを選択状態にする |
clear() | 全アイテムを削除 |
sortItems() | アイテムをソート |
シグナルとスロット
QListWidgetはユーザー操作を検知するためのシグナルを提供し、それに応じた処理を実装できます。代表的なシグナルは以下の通りです:
currentItemChanged(QListWidgetItem*, QListWidgetItem*)- 選択アイテム変更時itemClicked(QListWidgetItem*)- アイテムクリック時itemDoubleClicked(QListWidgetItem*)- ダブルクリック時itemChanged(QListWidgetItem*)- アイテム内容変更時