QListWidgetの基本的な使い方と実装例

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*) - アイテム内容変更時

タグ: Qt QListWidget QListWidgetItem Qt Designer C++

6月6日 16:05 投稿