没有QApplication就无法创建QWidget

erf*_*neh 8 c++ qt

当我编译我的qt项目时显示如下错误?

QWidget: Cannot create a QWidget without QApplication
Run Code Online (Sandbox Code Playgroud)

问题是什么?

Main.cpp的

#include<QApplication>
#include"MainWindow.h"

int main(int argc, char *argv[])
{
    QGuiApplication app(argc, argv);
    MainWindow w;
    w.show();
    return app.exec();
}
Run Code Online (Sandbox Code Playgroud)

Ho1*_*Ho1 12

很明显.你需要QApplication一个QWidget.更改QGuiApplicationQApplication,代码将运行正常.

#include <QApplication>
#include "MainWindow.h"

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    MainWindow w;
    w.show();
    return app.exec();
}
Run Code Online (Sandbox Code Playgroud)

如果您想知道"为什么有三个主要类,如QApplication,QGuiApplication和QCoreApplication",请参阅此内容.它说:

QCoreApplication是基类,QGuiApplication扩展了基类,其功能与处理窗口和GUI内容相关(非小部件相关,例如OpenGL或QtQuick),QApplication扩展了QGuiApplication与处理小部件相关的功能.

顺便说一句,这不是Qt Creator上可用的基本示例吗?你需要一本书来学习Qt,我建议你阅读Jasmin Blanchette的"Qt 4(第2版)的C++ GUI编程".

Qt Book

  • QGuiApplication和QApplication之间的关键区别不在于本书,因为它与Qt 4有关,而QGuiApplication在Qt5中引入. (4认同)

A. *_*rid 6

你应该改变QGuiApplicationQApplication你的主.

来自QGuiApplication类描述:

对于基于QWidget的Qt应用程序,请使用QApplication,因为它提供了创建QWidget实例所需的一些功能.