没有 QApplication 无法创建 QWidget
Posted
技术标签:
【中文标题】没有 QApplication 无法创建 QWidget【英文标题】:Cannot create a QWidget without QApplication 【发布时间】:2016-04-30 06:38:24 【问题描述】:当我编译我的 qt 项目时显示以下错误?
QWidget: Cannot create a QWidget without QApplication
有什么问题?
Main.cpp
#include<QApplication>
#include"MainWindow.h"
int main(int argc, char *argv[])
QGuiApplication app(argc, argv);
MainWindow w;
w.show();
return app.exec();
【问题讨论】:
【参考方案1】:您需要QApplication
才能拥有QWidget
。把QGuiApplication
改成QApplication
,代码就可以正常运行了。
#include <QApplication>
#include "MainWindow.h"
int main(int argc, char *argv[])
QApplication app(argc, argv);
MainWindow w;
w.show();
return app.exec();
如果你想知道“为什么会有 QApplication、QGuiApplication 和 QCoreApplication 这三个主要类”,请参阅this。它说:
QCoreApplication 是基类,QGuiApplication 扩展了基类 具有与处理窗口和 GUI 内容相关的功能的类 (非小部件相关,例如 OpenGL 或 QtQuick),QApplication 扩展 具有与处理小部件相关的功能的 QGuiApplication。
顺便说一句,这不是 Qt Creator 上可用的基本示例吗?你需要一本书来学习 Qt,我建议你阅读 Jasmin Blanchette 的“C++ GUI Programming with Qt 4 (2nd Edition)”。
【讨论】:
本书不会介绍 QGuiApplication 和 QApplication 之间的关键区别,因为它是关于 Qt 4 的,而 QGuiApplication 是在 Qt5 中引入的。 @FrankOsterfeld 我在qtcentre.org/threads/60203 中提到了QApplication、QGuiApplication 和QCoreApplication 之间的区别。你知道一本好的 Qt5 书吗?【参考方案2】:您应该在主目录中将 QGuiApplication
更改为 QApplication
。
来自QGuiApplication Class Description:
对于基于 QWidget 的 Qt 应用程序,请改用 QApplication,因为它 提供创建 QWidget 实例所需的一些功能。
【讨论】:
以上是关于没有 QApplication 无法创建 QWidget的主要内容,如果未能解决你的问题,请参考以下文章
隐藏新 QApplication() 的 Python 启动器图标
如何在PySide / PyQt中连接QApplication()和QWidget()对象?