Ответ 1
Вам необходимо настроить диалог с пользовательским интерфейсом пользователя из вашего файла .ui
. Компилятор Qt uic
генерирует файл заголовка из вашего файла .ui
, который необходимо включить в код. Предположим, что ваш .ui
файл называется about.ui
, а Dialog называется About
, тогда uic
создает файл ui_about.h
, содержащий класс Ui_About
. Существуют различные подходы к настройке пользовательского интерфейса, в простейшем -
#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
или используйте exec()
вместо show()
.