我正在尝试运行一个简单的Qt
程序,当我这样做时,会得到一个控制台窗口,提到:QWidget: Cannot create a QWidget when no GUI is being used
,第二行This application has requested the Runtime to terminate.....
和{{ 1}}文件因此停止工作。
我的.exe
文件如下所示:
.pro
有关于此的任何想法吗?
感谢。
答案 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