没有QApplication就无法创建QWidget

时间:2016-04-30 06:38:24

标签: c++ qt

当我编译我的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();
}

2 个答案:

答案 0 :(得分:11)

很明显。您需要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的“Qt 4(第2版)的C ++ GUI编程”。

Qt Book

答案 1 :(得分:6)

您应该将主屏幕中的QGuiApplication更改为QApplication

来自QGuiApplication Class Description

  

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