12

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

我的.pro文件如下所示:

#-------------------------------------------------
#
# Project created by QtCreator 2011-04-02T07:38:50
#
#-------------------------------------------------

QT       += core

QT       += gui

TARGET = Hello
CONFIG += console
CONFIG += qt
CONFIG   -= app_bundle

TEMPLATE = app


SOURCES += main.cpp

有什么想法吗?

谢谢。

4

5 回答 5

17

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

QApplication app(argc, argv);

并且可能会以如下一行结尾:

return app.exec();

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

于 2011-04-02T07:12:22.367 回答
11

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

首先你需要在你的(你开始你的应用程序的地方)#include <QtCoreApplication>交换#include <QApplication>main.cpp

在里面main(int,char**){

QCoreApplication a(argc, argv);_QApplication a(argc, argv);

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

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

于 2012-08-10T08:42:16.803 回答
3

我想我找到了问题所在。

由于我正在使用Qt Creator,并且在创建新项目时,我选择Qt Console ApplicationQt Gui Application.

于 2011-04-02T07:28:34.737 回答
2

当您的应用程序不是 QApplication 实例时,会发生“QWidget:不使用 GUI 时无法创建 QWidget”。来自Qt 文档

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

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

于 2012-11-17T17:54:26.597 回答
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
于 2013-10-31T10:44:39.633 回答