2011年12月19日月曜日

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


昨日、ubuntu11.10にアップグレードしました。そしてNetBeansが消え去りました。そんでもって使いづらいunityにユーザーインターフェイスが変更されてしまいました。見た目重視というかなんというか、とにかく使いにくいです。アイコン大きくするだけでClassicのほうが配置はよかったんじゃないのか?というかNetBeansはいずこへ...。しょうがないので公式サイトから7.0.1をダウンロードしインストール。無事元の開発環境に戻りました。
ついでに sudo apt-get install gnome-panel でクラッシック表示に戻しました。さらばunity。

はい、それでは今回はQTreeWidgetを使用します。※コンビニエンスクラスは前回説明済
C++ GUI Programming with Qt4にもサンプルは載っていますが、長いので独自のものを使います。サンプルのQTreeWidgetはQtCreaterなどで貼り付け、あるいは記述済みであるとします。(QtCreaterの使い方などは"Qtをはじめよう"を見てください。)

それではコードを
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)//uiにはGUI部品類が記述
{
    ui->setupUi(this);//uiにてGUI部品の初期化

    QStringList list;//QTreeWidgetのヘッダ名が入る
    list << "Key" << "Value";

    ui->treeWidget->setColumnCount(2);//列の数をセット
    ui->treeWidget->setHeaderLabels(list);//先ほどのlistをヘッダ名にセット

    QTreeWidgetItem *item = new QTreeWidgetItem;//セットするアイテム
    QTreeWidgetItem *child = new QTreeWidgetItem;//itemの子となるアイテム

    item->setText(0,"item");//0列目に"item"というテキストセット
    item->setText(1,"1");//1列目に"1"というテキストセット
    child->setText(0, "child item");//0列目に"child item"というテキストセット
    item->addChild(child);//itemの子にchildをセット

    ui->treeWidget->insertTopLevelItem(0, item);//QTreeView0行目にitemをセット
}


※uiにはGUI部品類が記述されているだけです。説明は省略します。

コメントの通りです。簡単ですね。
QtCreaterではほとんど意識しませんが、一応宣言方法例も
QTreeWidget *treeWidget;
QMainWindow w;
w.setCentralWidget(treeWidget);//メインウインドウへ登録
 
実行すると以下のようになります。
 
以上です。