Qt - QWidget:当没有使用GUI时无法创建QWidget

时间:2011-04-02 07:02:58

标签: c++ qt qwidget

我正在尝试运行一个简单的Qt程序,当我这样做时,会得到一个控制台窗口,提到:QWidget: Cannot create a QWidget when no GUI is being used,第二行This application has requested the Runtime to terminate.....和{{ 1}}文件因此停止工作。

我的.exe文件如下所示:

.pro

有关于此的任何想法吗?

感谢。

5 个答案:

答案 0 :(得分:17)

问题不在于.pro;它最有可能出现在main.cpp中。 Qt要求您在创建任何QWidget子类(以及某些其他类,如QPixmap)之前创建QApplication。您的main函数应以以下行开头:

QApplication app(argc, argv);

并且可能以以下行结束:

return app.exec();

在这些调用之间,您应该创建并显示主窗口。

答案 1 :(得分:11)

我发现你可以使用Qt Console项目来完成它,但是当你完成我的编辑后,它将不具备控制台程序的功能。

首先,您需要在#include <QtCoreApplication>(开始申请的地方)与#include <QApplication>交换main.cpp

main(int,char**){

QCoreApplication a(argc, argv);

交换QApplication a(argc, argv);

在QApplication和返回a.exec之间你有你的小部件和其他gui相关的东西

最后使用return a.exec();}

答案 2 :(得分:3)

我想我找到了问题所在。

由于我正在使用Qt Creator,因此在创建新项目时,我选择了Qt Console Application而不是Qt Gui Application

答案 3 :(得分:2)

&#34; QWidget:当没有使用GUI时无法创建QWidget&#34;当你的应用程序不是QApplication实例时会发生。 来自Qt docs

  

QApplication专门为QGuiApplication提供一些功能   基于QWidget的应用程序所需。它处理特定于小部件   初始化,完成并提供会话管理。

     

对于使用Qt的任何GUI应用程序,只有一个QApplication   对象,无论应用程序是否有0,1,2或更多窗口   在任何给定的时间。对于基于非QWidget的Qt应用程序,请使用   相反,QGuiApplication,因为它不依赖于QtWidgets   库。

答案 4 :(得分:0)

从文档中, QApplication 类管理GUI应用程序的控制流和主要设置 QCoreApplication 类为控制台Qt应用程序提供了一个事件循环

我遇到了同样的问题,默认的QT控制台应用程序使用QCoreApplication而不是QApplication来运行应用程序。

这是我做的工作

#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QWidget widget;

    widget.show();

    return a.exec();
}

我没有更改项目文件中的任何内容

QT       += core

QT       += gui

TARGET = Layouts
CONFIG   += gui
CONFIG   -= app_bundle

TEMPLATE = app


SOURCES += main.cpp