0

私は自分のアプリケーション用に新しいウィンドウを作成しようとしました。私はそれを機能させてウィンドウを開きましたが、フォーム.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 が機能していません。ヘルプ!!

4

2 に答える 2

0

私が正しく理解している場合は、new_roundを次のように定義する必要がありますが、ヘッダーファイル自体をインクルードする必要はありません。また、タイプNew_Round自体ではなく、タイプUi_NewRoundのポインターを宣言する必要があります。このコードを作成するために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;
}

それがあなたを始めることを願っています!

乾杯、

ベン。

于 2012-07-31T16:34:58.863 に答える
0

ヘッダー ファイル#include自体です。それを取り出して#include置き換えると、#include ui_Newound.hうまくいくはずです。最初に qmake を実行してプロジェクトを消去し、場合によっては Makefile を手動で削除する必要がある場合があります。

于 2012-07-31T16:16:40.383 に答える