簡體   English   中英

Qt設置新窗口

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM