2012-07-31 81 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