Qt设置新窗口

时间:2012-07-31 16:10:38

标签: c++ forms qt user-interface

我试过为我的应用程序创建一个新窗口。我让它工作并打开窗口,但当我试图添加我的表单.ui的事情,它只是停止工作。对不起,我不知道我做错了什么。只是有人请看一下代码和帮助。

    #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'

我可以找到关于这个主题的任何教程,所以我只是在我的mainwindow.h和mainwindow.cpp之间来回查看,所以不知道我做错了什么。再一次,我确实得到了显示的窗口,但是NewRound.ui没有工作。帮助!

2 个答案:

答案 0 :(得分:0)

您的头文件#include本身。取出#include并将其替换为#include ui_Newound.h,它应该有效。您可能需要先运行qmake并清理项目,并可能手动删除Makefile。

答案 1 :(得分: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;
}

希望能让你入门!

干杯,

本。