2012-07-31 79 views
0

我嘗試過並嘗試爲我的應用程序創建一個新窗口。我得到它的工作,並打開窗口,但後來當我試圖添加我的形式.ui它只是停止工作的事情。很抱歉,我不知道我做錯了什麼。只是有人請看看代碼和幫助。Qt設置新窗口

#include "new_round.h" 
    #include "ui_NewRound.h" 

    New_Round::New_Round(QWidget *parent) : 
     QMainWindow(parent), 
     uinr(new Uinr::New_Round) 
    { 
uinr->setupUi(this); 
    } 
    New_Round::~New_Round() 
    { 
     delete uinr; 
    } 

這是new_round類的cpp文件,現在這裏是標題。

#ifndef NEW_ROUND_H 
    #define NEW_ROUND_H 

    #include "new_round.h" 
    #include <QMainWindow> 

    namespace Uinr{ 
    class New_Round; 
    } 

    class New_Round : public QMainWindow 
    { 
     Q_OBJECT 
    public: 
     explicit New_Round(QWidget *parent = 0); 
     ~New_Round(); 

    private: 
     Uinr::New_Round *uinr; 
    }; 



    #endif // NEW_ROUND_H 

和這裏的4個錯誤,我得到

invalid use of incomplete type 'struct Uinr::New_Round' 
forward declaration of 'struct Uinr::New_Round' 
invalid use of incomplete type 'struct Uinr::New_Round' 
forward declaration of 'struct Uinr::New_Round' 

我coulnt找到任何關於這一問題的教程讓我有種只是來回看了我的mainwindow.h和mainwindow.cpp所以之間不知道我做錯了什麼。我再次顯示窗口,但是NewRound.ui格式不起作用。幫幫我!!

回答

0

您的頭文件#include s本身。拿出#include並用#include ui_Newound.h替換它,它應該工作。您可能需要先運行qmake並清理該項目,並可能需要手動刪除Makefile。

+0

它沒有工作,我改變了包括和運行qmake,清理項目和刪除的make文件,並重新啓動Qt,但它仍然沒有工作。 – tyty5949 2012-07-31 16:35:17

+0

@ user1438702你是如何添加表單的?通過QtCreator菜單選項,還是手動? – 2012-07-31 16:39:06

+0

通過文件 - >新建文件或項目 - > qt->新的設計器形式 – tyty5949 2012-07-31 16:44:39

0

如果我理解正確,你需要定義new_round如下,但是,你不想包含頭文件本身。另外,你想聲明一個Ui_NewRound類型的指針,而不是New_Round類型的本身 - 我假設你使用Designer來創建這個代碼,在這種情況下,你最終得到一個名爲Ui_NewRound的類。另外,不要打擾名稱空間開始,它只是使事情過於複雜。所以在這裏我們去頭文件:

#ifndef NEW_ROUND_H 
#define NEW_ROUND_H 


#include <QMainWindow> 
#include "Ui_NewRound.h" 

// no including of new_round here -- this needs to be included in .cpp file instead 
class New_Round : public QMainWindow 
{ 
    Q_OBJECT 
public: 
    New_Round(QWidget *parent = 0); 
    ~New_Round(); 

private: 
    Ui_NewRound *nr; 


}; 

#endif 

這將被保存爲new_round.h。

在的.cpp代碼,我將不得不

#include "new_round.h" 
#include "ui_NewRound.h" 


New_Round::New_Round(QWidget *parent) : 
    QMainWindow(parent) 
{ 
    nr = new ui_NewRound; 
    nr->setupUi(this); 
} 
New_Round::~New_Round() 
{ 
    delete nr; 
} 

希望,讓你開始!

乾杯,

本。

+0

它給了我錯誤:ISO C++禁止聲明沒有類型的'Ui_NewRound' – tyty5949 2012-07-31 16:42:27

+0

正確的,在這種情況下,您實際上需要創建一類Ui_NewRound - 這通常是使用Qt設計器軟件完成的。或者您可以手動創建它! – 2012-07-31 16:45:32

+0

啊,我做過了,我有qt表單設計師一次添加.ui .cpp和.h。它自動做到了。 – tyty5949 2012-07-31 16:48:24