[英]Qt setting up new window
我試圖為我的應用程序創建一個新窗口。 我讓它工作並打開窗口,但是當我嘗試添加表單.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之間來回瀏覽,因此不確定我做錯了什么。 再次,我確實獲得了要顯示的窗口,但是forNewNew.ound.ui模板無法正常工作。 救命!!
您的頭文件#include
本身。 取出該#include
並將其替換為#include ui_Newound.h
,它應該可以工作。 您可能需要先運行qmake並清理項目,然后手動刪除Makefile。
如果我理解正確,則需要按以下方式定義new_round,但是,您不希望包含頭文件本身。 另外,您想聲明一個Ui_NewRound類型的指針,而不是New_Round類型本身的指針-我假設您使用設計器來創建此代碼,在這種情況下,您最終得到一個名為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;
}
希望能幫助您入門!
干杯,
本
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.