2011年12月17日土曜日

( Qt C++ )アイテムビューのコンビニエンスクラス(QListWidget)を使う


新しいパソコンに替えようかなと考えたりする。でもスペック的には今の環境で全然問題ない。しかし、新CPUやSSDを見てると欲しくなってくる。どれほど速くなるのだろうか?買い換えるか!でもスペック的には今の環境で満足しているっ!...何なんだこの定期的にくる無限ループは...。


今回はQListWidgetを使います。
QListWidget、QTableWidget、QTreeWidgetはコンビニエンスクラスなどといわれるようです。ウィジット内にアイテムを直接表示でき、データをアイテム単位で管理できるそうです。比較的少ないアイテムを表示するときに使うようです。また、モデルとビューを分離する必要がないので扱いが楽です。

サンプルはこちらを少し変更して使います。ではコードを

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)//uiにはGUI部品などが記述されている
{
    ui->setupUi(this);//uiでGUI部品を初期化

    ui->listWidget->addItem(new QListWidgetItem("Oak"));
    ui->listWidget->addItem(new QListWidgetItem("Banana"));
    ui->listWidget->addItem(new QListWidgetItem("Apple"));
    ui->listWidget->addItem(new QListWidgetItem("Orange"));
    ui->listWidget->addItem(new QListWidgetItem("Grapes"));
    ui->listWidget->addItem(new QListWidgetItem("Jayesh"));
}

uiの部分は簡単なので省略します。詳しくは前回の記事をみてください。
listWidget->addItem(new QListWidgetItem("・・・"));でアイテムをどんどん追加しています。ほんとそれだけです。

Qt Createrとかでは部品をウィンドウに貼り付けるだけなのでほとんど意識しませんが、一応、宣言方法とかも書いときます。

QListWidget *listWidget = new QListWidget();

QMainWindow w;
w.setCentralWidget(listWidget);//メインウィンドウに登録

かなり簡単です。
実行すると以下のようになります。
 

以上です。