QT+VisualStudioでダイアログをつくってみる

QTをVisualStudioでプログラミングする方法は
http://www.ebatech.jp/archives/1499
を参考にした。

VisualStudioでQtDesignerを使ってダイアログを作る方法をメモする。

QTプロジェクトを作るとForm Filesに拡張子uiのファイルが生成される。このファイルはQTデザイナーでデザインできる物である。メインダイアログは予め出来ているが、新しくダイアログを追加する場合にどのようにするかをメモする。

Qt Designerで適当にデザインする

「Form Files」で右クリックし、「新しい項目の追加」からQt Formsを選び、選びたいベースを選ぶ。

ファイル名をここでは「TestDialog.ui」とする。

するとQtDesignerが起動する。適当にデザインし保存する。

次にVisualStudioに戻りビルドする。QtDesignerでつくっておいたuiファイルをもとにqmakeが実行されクラスファイルが生成される。

新しいダイアログのクラスを作る

qmakeによりGenerated Filesにui_TestDialog,h/cppが追加されていることがわかる。

新しいDialogのクラスをTestDialogとする。
この時以下のような実装をする。

//TestDialog.h
#ifndef TEST_DIALOG_H
#define TEST_DIALOG_H
#include <QDialog>
#include "ui_TestDialog.h"

class TestDialog:public QDialog{
    Q_OBJECT
public:
    TestDialog();
    ~TestDoalog();

protected:
    Ui::TestDialog ui;
};

#endif//TEST_DIALOG_H
#include "TestDialog.h"
TestDialog::TestDialog(QWidget* parent)
:QDialog(parent)
{
    ui.setupUi(this);
}

TestDialog::~TestDialog()
{
}

こんな感じにすればQt Designerでデザインしたダイアログを自分のクラスで使えるようになる。
あとはメインのDialogのメンバで

//へっだ
    TestDialog m_cTestDialog;
//そーす
    m_cTestDialog.show();//exec()

みたいにすれば表示される。
show()は表示しっぱなし。execはアクティブウィンドウがそのダイアログに移りOKを押すまでもとのダイアログのプロセスに戻らない。