QT 在主类之外声明 Mainwindow
Posted
技术标签:
【中文标题】QT 在主类之外声明 Mainwindow【英文标题】:QT declare Mainwindow out of the main class 【发布时间】:2013-06-19 12:03:06 【问题描述】:我在 c++ 中有这两个类
GUI.cpp
#include "AL_GUI.h"
#include <QtGui/QApplication>
#include "mainwindow.h"
GUI::GUI()
void GUI::startGUI()
int c=1;
char *array[10];
char** v = &array[0];
QApplication qa(c,v);
w.show();
qa.exec();
void GUI::notifyAlert()
GUI::~GUI()
// TODO Auto-generated destructor stub
GUI.h
#include <QtGui/QApplication>
#include "mainwindow.h"
#include "mainwindow.h"
#ifndef GUI_H_
#define GUI_H_
class GUI
public:
GUI();
virtual ~GUI();
void startGUI();
void notifyAlert();
private:
MainWindow w;
;
#endif
但是当我运行这个程序时,我遇到了错误: QWidget:必须在 QPaintDevice 之前构造一个 QApplication
如何在 gui.h 中声明 MainWindow w 以使我不会收到此错误
【问题讨论】:
我会让 w 指针使用 MainWindow 的前向声明,并从 GUI.h 中删除所有包含(包括 mainwindow.h 的 2 个包含)。然后就像塞巴斯蒂安的回答说首先构建 QApplication 。 你可以把代码发给我吗? 【参考方案1】:你不能(嗯,你可以,但你不应该)。 MainWindon 声明是正确的。问题是您在创建 QApplication 之前尝试创建 GUI 对象。
为什么不在创建 GUI 对象的地方创建 QApplication,就在它之前?
【讨论】:
因为我需要或者MainWindow或者QApplication等实例变量 对不起,我不明白你想说什么。 我需要在 gui.h 中有: private: MainWindow w; ;或私有:QApplication qa; ;或两者兼而有之 您可以随时使用 QApplication::instance() 方法从任何地方访问 QApplication 对象(它是一个单例)对象。 在 GUI 中有一个 MainWindow 成员很好。我的观点是,您应该在创建 GUI 对象的地方创建 QApplication 对象,而不是在 startGui 中。【参考方案2】:我会让 w 指针使用 MainWindow 的前向声明,并从 GUI.h 中删除所有包含(包括 mainwindow.h 的 2 个包含)。然后就像塞巴斯蒂安的回答说首先构建 QApplication 。
AL_GUI.h
#ifndef GUI_H_
#define GUI_H_
class MainWindow;
class GUI
public:
GUI();
virtual ~GUI();
void startGUI();
void notifyAlert();
private:
MainWindow* w;
;
gui.cpp
#include "AL_GUI.h"
#include <QtGui/QApplication>
#include "mainwindow.h"
GUI::GUI() : w(NULL)
void GUI::startGUI()
int c=1;
char *array[10];
char** v = &array[0];
QApplication qa(c,v);
w = new MainWindow;
w->show();
qa.exec();
void GUI::notifyAlert()
GUI::~GUI()
delete w;
【讨论】:
以上是关于QT 在主类之外声明 Mainwindow的主要内容,如果未能解决你的问题,请参考以下文章
@RestController 返回 404 not found 除了在主类中
首先定义一个描述银行账户的Account类,包括成员变 量“账号”和“存款余额”,成员方法有“存款”“取款”和“余额查询”。其次, 编写一个主类,在主类中测试Account类的功能。
编写Java应用程序。首先定义一个描述银行账户的Account类,包括成员变 量“账号”和“存款余额”,成员方法有“存款”“取款”和“余额查询”。其次, 编写一个主类,在主类中测试Account类的