12

単純なプログラムを実行しようとしていますが、実行するQtと、コンソール ウィンドウに :QWidget: Cannot create a QWidget when no GUI is being usedと 2 行目が表示さ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とreturna.execの間に、ウィジェットやその他のGUI関連のものがあります

そして最後にあなたは使用しますreturn a.exec();}

于 2012-08-10T08:42:16.803 に答える
3

問題がどこにあるかを見つけたと思います。

を使用しているのでQt Creator、新しいプロジェクトを作成するときに、Qt Console Application代わりに選択していましQt Gui Applicationた。

于 2011-04-02T07:28:34.737 に答える
2

「QWidget: GUI が使用されていないときに QWidget を作成できません」は、アプリケーションが QApplication インスタンスでない場合に発生します。Qtドキュメントから:

QApplication は、QWidget ベースのアプリケーションに必要ないくつかの機能を備えた QGuiApplication を特殊化します。ウィジェット固有の初期化、ファイナライズを処理し、セッション管理を提供します。

Qt を使用する GUI アプリケーションの場合、アプリケーションが常に 0、1、2、またはそれ以上のウィンドウを持っているかどうかに関係なく、正確に 1 つの QApplication オブジェクトがあります。非 QWidget ベースの Qt アプリケーションの場合は、QtWidgets ライブラリに依存しないため、代わりに QGuiApplication を使用してください。

于 2012-11-17T17:54:26.597 に答える
0

ドキュメントによると、QApplicationクラスは GUI アプリケーションの制御フローとメイン設定を管理し、QCoreApplicationクラスはコンソール Qt アプリケーションのイベント ループを提供します。

私は同じ問題を抱えていました。デフォルトのQT Console Appは、QApplicationの代わりにQCoreApplicationを使用してアプリケーションを実行します。

これが私がそれを機能させるためにしたことです

#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 に答える