.ui
파일의 UI로 대화 상자를 설정해야합니다. Qt uic
컴파일러는 코드에 포함해야하는 .ui
파일의 헤더 파일을 생성합니다. .ui
파일의 이름이 about.ui
이고 대화 상자의 이름이 About
이라고 가정하면 uic
은 Ui_About
클래스를 포함하는 ui_about.h
파일을 만듭니다. 설정하여 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()
을 사용하십시오.
감사합니다. Andreas! 가장 간단한 방법을 간다 ... 사실은 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 –