.ui
ファイルのUIを使用してダイアログをセットアップする必要があります。 Qt uic
コンパイラは、コードに含める必要がある.ui
ファイルからヘッダファイルを生成します。 .ui
ファイルのファイル名がabout.ui
で、ダイアログの名前がAbout
であると仮定すると、uic
はファイルui_about.h
を作成し、クラスはUi_About
です。セットアップあなたのUIへの異なるアプローチが最も簡単で、あなたがより良いアプローチは、それがより良いあなたのダイアログをカプセル化するので、あなたは内の特定のダイアログに固有の機能を実装することができるように、継承を使用することです
#include "ui_about.h"
...
void MainWindow::on_actionAbout_triggered()
{
about = new QDialog(0,0);
Ui_About aboutUi;
aboutUi.setupUi(about);
about->show();
}
を行うことができます、ありますサブクラス:
AboutDialog.h:
#include <QDialog>
#include "ui_about.h"
class AboutDialog : public QDialog, public Ui::About {
Q_OBJECT
public:
AboutDialog(QWidget * parent = 0);
};
AboutDialog.cpp:
AboutDialog::AboutDialog(QWidget * parent) : QDialog(parent) {
setupUi(this);
// perform additional setup here ...
}
使用法:いずれの場合で
#include "AboutDialog.h"
...
void MainWindow::on_actionAbout_triggered() {
about = new AboutDialog(this);
about->show();
}
、重要コードがsetupUi()
メソッドを呼び出すことです。
BTW:上記のコードのダイアログは非モーダルです。モーダルダイアログを表示するには、ダイアログのwindowModality
フラグをQt::ApplicationModal
に設定するか、show()
の代わりにexec()
を使用します。
ありがとう、アンドレアス!現時点では最も簡単な方法です...実際には、ui_about.hは作成されておらず、現在プリセットされていません。最初に指定したコードのプロジェクトはコンパイルされません。手動でui_about.hを作成する方法はありますか? –
「uic about.ui -o ui_about.h」を使用して手動で作成することができます。しかし、あなたのビルドシステムはそれを世話するべきです。 'FORMS = about.ui'が' .pro'ファイルに含まれていることを確認してください。 –
.proファイルに奇妙なエントリがありますか?しばらく前にリソースファイルが作成されないという同様の問題がありました:http://stackoverflow.com/questions/12380171/qmake-not-generating-binary-resource-files/12431570#12431570 –