2011年12月12日月曜日

( Qt C++ )QStringListModelのリストビューへの表示

今日からC++ GUI Programming with Qt4の10章のアイテムビュークラスをメモしていきます。
QtではMVCモデル/ビューアーキテクチャを採用しているそうです。これにより実際に表示する範囲のデータだけをモデルに格納するので、高速かつ低メモリ消費量だそうです。
まぁこの辺りの説明はC++ GUI Programming with Qt4 217ページからダァーっと載っていますんでそちらを見てください。(長いんで書きません)

それでは、表題の通りQStringListModelのリストビューへの表示をやっていきます。QStringListModelはその名のとおりQStringListを格納するものです。
サンプルは GUI Programming with Qt4に載ってるサンプルを少し変更して使います。
また、QListViewはすでにQt Createrなどで配置済みであるとします。ではコードを

#include "QStringListModel"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)//UiでlistviewなどのGUI部品を記述しています。
{
    ui->setupUi(this);//Uiで各GUI部品を初期化

    QStringListModel *model = new QStringListModel();
    QStringList qlist;

    qlist << "one";
    qlist << "two";
    qlist << "three";

    model->setStringList(qlist);
    ui->listView->setModel(model);//listViewはQListViewです。
}

まずincludeなどは説明不要ですね。そのまんまです。 MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),はQtをはじめようあるいはクラスリファレンスで確認してください。
次にui->setupUi(this);ですが、これは今回の理解に関係ないので今回は無視します。

次からが重要なところです。といってもそのまんまです。
QStringListModelをnewして、そのモデルにセットするQStringListを作成します。("one", "two", "three"の順に格納)その後QStringListをモデルにセットして、その出来上がったモデルをQListViewにセットしています。

以上です。次はQDirModelを使います。