【初心者向け】Qt WidgetsでQListWidgetItemを使う:QListWidgetItem::QListWidgetItem()の解説とサンプルコード


QListWidgetItem::QListWidgetItem()は、Qt WidgetsライブラリにおけるQListWidgetItemクラスのコンストラクタの一つです。このコンストラクタは、新しいQListWidgetItemオブジェクトを作成するために使用されます。

構文

QListWidgetItem::QListWidgetItem(QListWidget *parent = 0, int type = Type);
QListWidgetItem::QListWidgetItem(const QString &text, QListWidget *parent = 0, int type = Type);
QListWidgetItem::QListWidgetItem(const QIcon &icon, const QString &text, QListWidget *parent = 0, int type = Type);
QListWidgetItem::QListWidgetItem(const QListWidgetItem &other);

引数

  • type: リストアイテムの種類を指定します。デフォルトはTypeです。
  • icon: リストアイテムに表示されるアイコンを指定します。
  • text: リストアイテムに表示されるテキストを指定します。
  • parent: 親となるQListWidgetオブジェクトを指定します。省略すると、親オブジェクトは指定されません。

戻り値

新しいQListWidgetItemオブジェクトを返します。

詳細

上記の構文のうち、最初の2つの構文は、テキストとアイコンを指定せずにQListWidgetItemオブジェクトを作成します。3番目の構文は、テキストとアイコンを指定してQListWidgetItemオブジェクトを作成します。4番目の構文は、既存のQListWidgetItemオブジェクトのコピーを作成します。

QListWidgetItemオブジェクトは、QListWidgetウィジェット内に表示されるアイテムを表します。QListWidgetItemオブジェクトには、テキスト、アイコン、チェック状態、フォント、背景色などのプロパティを設定することができます。

// 親となるQListWidgetオブジェクトを作成します。
QListWidget *listWidget = new QListWidget();

// テキストとアイコンを指定してQListWidgetItemオブジェクトを作成します。
QListWidgetItem *item1 = new QListWidgetItem(QIcon(":/images/icon.png"), "Item 1", listWidget);

// テキストのみを指定してQListWidgetItemオブジェクトを作成します。
QListWidgetItem *item2 = new QListWidgetItem("Item 2", listWidget);

// 既存のQListWidgetItemオブジェクトのコピーを作成します。
QListWidgetItem *item3 = new QListWidgetItem(*item1);

// 作成したQListWidgetItemオブジェクトをQListWidgetウィジェットに追加します。
listWidget->addItem(item1);
listWidget->addItem(item2);
listWidget->addItem(item3);


#include <QtWidgets>

int main(int argc, char *argv[]) {
  QApplication app(argc, argv);

  // 親となるQListWidgetオブジェクトを作成します。
  QListWidget *listWidget = new QListWidget();

  // テキストとアイコンを指定してQListWidgetItemオブジェクトを作成します。
  QListWidgetItem *item1 = new QListWidgetItem(QIcon(":/images/icon.png"), "Item 1", listWidget);

  // テキストのみを指定してQListWidgetItemオブジェクトを作成します。
  QListWidgetItem *item2 = new QListWidgetItem("Item 2", listWidget);

  // 既存のQListWidgetItemオブジェクトのコピーを作成します。
  QListWidgetItem *item3 = new QListWidgetItem(*item1);

  // 作成したQListWidgetItemオブジェクトをQListWidgetウィジェットに追加します。
  listWidget->addItem(item1);
  listWidget->addItem(item2);
  listWidget->addItem(item3);

  // QListWidgetウィジェットを表示します。
  listWidget->show();

  return app.exec();
}

例2:QListWidgetItemオブジェクトのプロパティを設定する

#include <QtWidgets>

int main(int argc, char *argv[]) {
  QApplication app(argc, argv);

  // 親となるQListWidgetオブジェクトを作成します。
  QListWidget *listWidget = new QListWidget();

  // テキストとアイコンを指定してQListWidgetItemオブジェクトを作成します。
  QListWidgetItem *item = new QListWidgetItem(QIcon(":/images/icon.png"), "Item 1", listWidget);

  // フォントを設定します。
  item->setFont(QFont("Arial", 16));

  // 背景色を設定します。
  item->setBackgroundColor(QColor(Qt::lightGray));

  // チェック状態を設定します。
  item->setCheckState(Qt::Checked);

  // 作成したQListWidgetItemオブジェクトをQListWidgetウィジェットに追加します。
  listWidget->addItem(item);

  // QListWidgetウィジェットを表示します。
  listWidget->show();

  return app.exec();
}
#include <QtWidgets>

int main(int argc, char *argv[]) {
  QApplication app(argc, argv);

  // 親となるQListWidgetオブジェクトを作成します。
  QListWidget *listWidget = new QListWidget();

  // テキストとアイコンを指定してQListWidgetItemオブジェクトを作成します。
  QListWidgetItem *item = new QListWidgetItem(QIcon(":/images/icon.png"), "Item 1", listWidget);

  // itemClickedシグナルに接続します。
  connect(item, &QListWidgetItem::itemClicked, [=]() {
    qDebug() << "Item clicked: " << item->text();
  });

  // 作成したQListWidgetItemオブジェクトをQListWidgetウィジェットに追加します。
  listWidget->addItem(item);

  // QListWidgetウィジェットを表示します。
  listWidget->show();

  return app.exec();
}


QListWidgetItem::QListWidgetItem()は、Qt WidgetsライブラリにおけるQListWidgetItemクラスのコンストラクタの一つで、新しいQListWidgetItemオブジェクトを作成するために使用されます。しかし、状況によっては、QListWidgetItem::QListWidgetItem()の代替方法の方が適切な場合があります。

代替方法

QListWidgetItem::QListWidgetItem()の代替方法としては、以下の方法が考えられます。

  • QListWidgetItem(const QListWidgetItem &other):既存のQListWidgetItemオブジェクトのコピーを作成します。
  • QListWidgetItem(const QIcon &icon, const QString &text, QListWidget *parent = nullptr, int type = Type):テキストとアイコンを指定してQListWidgetItemオブジェクトを作成します。
  • QListWidgetItem(const QString &text, QListWidget *parent = nullptr, int type = Type):テキストのみを指定してQListWidgetItemオブジェクトを作成します。

具体的な使い分け

  • 既存のQListWidgetItemオブジェクトを基に新しいオブジェクトを作成したい場合: QListWidgetItem(const QListWidgetItem &other)
  • テキストとアイコンを表示したい場合: QListWidgetItem(const QIcon &icon, const QString &text)
  • テキストのみを表示したい場合: QListWidgetItem(const QString &text)

// テキストのみを指定してQListWidgetItemオブジェクトを作成します。
QListWidgetItem *item1 = new QListWidgetItem("Item 1");

// テキストとアイコンを指定してQListWidgetItemオブジェクトを作成します。
QListWidgetItem *item2 = new QListWidgetItem(QIcon(":/images/icon.png"), "Item 2");

// 既存のQListWidgetItemオブジェクトのコピーを作成します。
QListWidgetItem *item3 = new QListWidgetItem(*item2);

上記以外にも、以下の方法でQListWidgetItemオブジェクトを作成することができます。

  • QModelIndexを使用してQListWidgetItemを作成する: QListViewやQTableViewなどのモデルビューコントロールで使用する場合などに有効です。
  • QWidgetをQListWidgetItemに設定する: 複雑なコンテンツを表示したい場合などに有効です。