Qtのコントロール - リスト

提供:MochiuWiki - SUSE, Electronic Circuit, PCB
2021年2月23日 (火) 18:16時点におけるWiki (トーク | 投稿記録)による版 (ページの作成:「== 概要 == Qtにおいて、<code>QListWidget</code>クラスを使用してリストのコントロールの手順を記載する。<br> <br> <u>似た名前のウィ…」)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

概要

Qtにおいて、QListWidgetクラスを使用してリストのコントロールの手順を記載する。

似た名前のウィジェットにリストビューがあるので間違えないように注意すること。

ここでは、リストのコントロールIDをlistWidgetとしている。


アイテムの追加

 listWidget->clear();
 
 // 文字列を追加する場合
 listWidget->addItem( tr("何か文字列") );



現在のアイテムの文字列を取得

 QListWidgetItem *pItem = listWidget->currentItem();
 QString str = pItem->text();



選択されているアイテムを取得

複数選択が有効になっている場合、複数選択されているアイテムを取得するため、以下のように記述する。

 // 選択されているアイテムのリストを取得
 QList<QListWidgetItem *> listItems = listWidget->selectedItems();
 
 // 個別のアイテムに対する処理
 for(int i = 0; i < listItems.size(); i++)
 {
    QListWidgetItem *pItem = listItems[i];
 }



選択されているアイテムの削除

Qtの公式ドキュメントには、takeItemメソッドを使用してリストのアイテムを削除するとの記述があるが、
takeItemメソッドは引数に行番号を1つ渡すだけであるため、複数選択の場合、それらをまとめて削除することができない。

複数選択の場合、まとめて削除する方法は、以下のように記述する。

 qDeleteAll(listWidget->selectedItems());


また、以下の方法においても、まとめて削除することができる。

 QList<QListWidgetItem *> itemList = listWidget->selectedItems();
 for(int i=0; i < itemList.size(); i++)
 {
    widget->takeItem(listWidget->indexFromItem(itemList[i]));
 }