我尝试将标题窗口包含在他的子窗口中。让我们看一下代码:
//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我必须在这个子窗口的主窗口方法中操作。
有什么想法吗?
答案 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(); 这很容易!