在QT中包含标题主窗口到子窗口

时间:2014-08-01 22:08:13

标签: c++ windows qt

我尝试将标题窗口包含在他的子窗口中。让我们看一下代码:

//header of main window
#include "second_window.h" // include child window

class mainclass : public QMainWindow
{
    Q_OBJECT

public:
    mainclass(QWidget *parent = 0);
    ~mainclass();
    second_window *h_secondwindow = nullptr;

private:
    Ui::mainclass ui;

};

第二次

//header second_window.h
#include "mainwindow.h" // only this from mainwindow class
class second_window : public QWidget
{
    Q_OBJECT

public:
    third_window * h_third_window = nullptr;
    second_window(QWidget *parent = 0);
    ~second_window();

private:
    void reDrawTable();
    Ui::second_window ui;

};

#endif // second_window_H

在“second_window.h”中,我尝试包含“主窗口标题”(让我们称之为mainwindow.h)

我在这一行得到了错误(在主窗口中):

second_window *h_secondwindow = nullptr;

错误如:

// qdatetime.h(我不编辑此文件; 0)

error C2059: syntax error : '::'
static inline qint64 nullJd() { return std::numeric_limits<qint64>::min(); }

// mainwindow.h

error C2143: syntax error : missing ';' before '*'
second_window *h_secondwindow = nullptr;

我需要这个变量bcoz我必须在这个子窗口的主窗口方法中操作。

有什么想法吗?

3 个答案:

答案 0 :(得分:0)

尝试,交叉检查“second_window.h”以查看是否存在任何代码错误,可能会出现一些错误。这些错误主要发生在指针和引用上,因此可能出现错误!

答案 1 :(得分:0)

您不应该将头文件包含在彼此内部。您可以在mainwindow中使用second_window.h类的前向声明:

//header second_window.h
class mainwindow;

前向声明意味着您只能将该类用作头文件中的指针而不是类实例。因此,使用这种方式,您现在可以指向mainwindow中的second_window.h

但建议您检查是否可以更改设计并消除此循环依赖性。

答案 2 :(得分:0)

我认为你的代码是黑暗的意思。 为什么second_window包含main_window? 你应该在主窗口中初始化:

second_window * _secondWindowUi;

在.cpp文件中: _secondWindowUI = new second_window(); 这很容易!