我试过为我的应用程序创建一个新窗口。我让它工作并打开窗口,但当我试图添加我的表单.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没有工作。帮助!
答案 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;
}
希望能让你入门!
干杯,
本。