2014-05-22 60 views
0

我是Qt新手,本書是Qt 4.在Qt 5中,我的表單的頭文件在哪裏?

當我創建一個dialog.ui或mainwindow.ui文件時,它將它放在Folder窗體下。我沒有看到任何頭文件或類似的東西。我如何可以在我的main.cpp文件中引用我的dialog.ui它?

獲取錯誤ui使用未定義的類Ui :: MainWindow。

謝謝!

#include <QApplication> 
#include <QDialog> 

#include "mainwindow.h" 

int main(int argc, char *argv[]) 
{ 
    QApplication a(argc, argv); 

    Ui::MainWindow ui; 
    QDialog *dialog = new QDialog; 
    ui.setupUi(dialog); 
    dialog->show(); 

    return a.exec(); 
} 

.pro文件:

#------------------------------------------------- 
# 
# Project created by QtCreator 2014-05-22T17:21:36 
# 
#------------------------------------------------- 

QT  += core gui 

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets 

TARGET = untitled7 
TEMPLATE = app 


SOURCES += main.cpp 

HEADERS += mainwindow.h 

FORMS += mainwindow.ui 

QT 5實現其自動生成:

#include "mainwindow.h" 
#include "ui_mainwindow.h" 

MainWindow::MainWindow(QWidget *parent) : 
    QMainWindow(parent), 
    ui(new Ui::MainWindow) 
{ 
    ui->setupUi(this); 
} 

MainWindow::~MainWindow() 
{ 
    delete ui; 
} 

回答

0

Ui::MainWindow是一個私有類是僅由MainWindow類訪問。您不能在其他地方使用它(例如main())。

Ui::MainWindow定義在ui_mainwindow.h,它是在編譯應用程序時自動生成的。

要創建基於mainwindow.ui的GUI,只需實例化一個對象MainWindow

#include <QApplication> 
#include "mainwindow.h" 

int main(int argc, char *argv[]) 
{ 
    QApplication a(argc, argv); 

    MainWindow mw; 
    mw.show(); 

    return a.exec(); 
} 

注:

  1. 當你創建一個新的Qt Widgets應用程序Qt Creator中的main.cpp is auto- 爲您生成。你不需要自己寫。

  2. Qt的User Interface Compiler解析mainwindow.ui併產生 ui_mainwindow.h在你的build目錄。當您在Qt Creator中構建 您的應用程序時,它會自動運行。你不需要手動運行它。

+0

我正試圖使用​​本書中的代碼。在你看來,我應該找一本qt 5書還是堅持4? – runners3431

+0

我建議遵循官方的「入門指南」:http://qt-project.org/doc/qt-5/gettingstartedqt.html。 Qt 4書籍中的大多數概念仍然有效,但是您需要了解的細微差異 - 請參閱http://qt-project.org/doc/qt-5/portingguide.html。另外,自Qt 4天以來,Qt Creator已經有了很大的改進,所以Qt 4書中的一些代碼比所需的更長(即使它們仍然可以工作)。我認爲還沒有發佈任何Qt 5書籍。 – JKSH