LoginSignup
1
0

More than 5 years have passed since last update.

QListWidgetItemにウィジェットを追加する方法

Posted at

はじめに

独自にカスタマイズしたウィジェットを、QListWidgetに追加する方法を調べたので、まとめておきたいと思います。

QListWidgetの使い方

まずは、以下のようにしてQListWidgetItemを追加します。

    QListWidgetItem *item = new QListWidgetItem();
    item->setSizeHint(QSize(50, 50));
    ui->listWidget->addItem(item);

setSizeHintを忘れると、追加したアイテムの見た目が崩れるので注意してください。
つぎに、アイテムに追加したいウィジェットを用意します。

QWidget *myWidget = new QWidget();
// 〜 あれこれ設定 〜

そして、QListWidget::setItemWidget(QListWidgetItem *item, QWidget *widget)で、アイテムにウィジェットを設定します。

ui->listWidget->setItemWidget(item, myWidget);

アイテムを削除するには、QListWidget::takeItem(int row)で、リストからアイテムを取り除いた後、そのアイテムをdeleteしてやれば削除できます。

QListWidgetItem *item = ui->listWidget->takeItem(0);
delete item;

QListWidgetには、QListWidget::removeItemWidget(QListWidgetItem *item)というのもありますが、こちらはアイテムからウィジェットを取り除くだけで、アイテムはリストに残ったままになります。

詳しくは、公式ドキュメントを参照してください。

サンプル

アイテムを追加・削除するサンプルをGitHubに上げておきました。
GitHub - QListWidget_Sample

おわりに

独自にカスタムしたウィジェットを追加できるようになったのですが、注意点があります。
中身が動的に変化するようなウィジェットを追加したい場合、QListWidgetは使えません。
この場合は、QListViewQItemDelegateを使う必要があります。
この辺はまだ調べていないので、調べたらまとめたいと思います。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0