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を押すまでもとのダイアログのプロセスに戻らない。