0

次のコードを実行しようとするたびに、このエラー (以下のタイトル) が表示されます。

#include <QCoreApplication>
#include <QQuickView>

int main(int argc, char *argv[]){
    QCoreApplication app(argc, argv);

    QQuickView view;
    view.setSource(QUrl::fromLocalFile("app.qml"));
    QObject *object = (QObject*)view.rootObject();

    view.show();

    delete object;
    return app.exec();
}

ウィンドウを作成できません: スクリーンがありません

プログラムが予期せず終了しました。

そのエラーについてオンラインで見つけることができるのは、上記よりもはるかに複雑な特定の条件に起因するバグレポートだけです。

app.qmlは、単独で正常に実行されるファイルです。つまり、上記の C++ がなくても、「Qt Quick UI」として構成された別のプロジェクトで実行できます。パスqrc://を指定したり、意図的に存在しないファイルを指定したりしても、効果はありません。

QObject*キャストに注意してください-これはdocsにはありませんでしたが、ありませんでした:

/main.cpp:11: エラー: タイプ 'QObject *' の変数をタイプ 'QQuickItem *' の右辺値で初期化できません

これはどのように行うべきですか?

4

1 に答える 1

2

コンソール アプリケーションQCoreApplicationで使用できますが、GUI アプリケーションでは使用できません。つまり、オブジェクトを使用する必要があります。グラフィカルなアプリケーションではなく、コンソール アプリケーションを作成したように思えます。QGuiApplication

を介して適切なアプリケーションを作成し、Qt Quick Application「app.qml」をリソースとしてそのプロジェクトに追加し、プロジェクト テンプレートによって提供されるデフォルトの「main.qml」の代わりにそのようなファイルを呼び出すことができます。


現在のプロジェクトをすばやく修正したい場合は、.pro ファイルが GUI ライブラリをインポートするように設定されていることを確認してください。

QT += gui qml quick

qml ファイルをリソースとして設定します。

  1. を介して新しいリソースファイルを作成しますfile -> new File or Project... -> Qt -> Qt Resource File
  2. 新しく作成した.qrcファイルを右クリックし、クリックadd existing fileして「app.qml」ファイルを追加します

最後に、メインを次のように書き換えます。

#include <QQuickView>
#include <QGuiApplication>

int main(int argc, char *argv[])
{
    QGuiApplication a(argc, argv);    // GUI APPLICATION!!!
    QQuickView view;
    view.setSource(QUrl(QStringLiteral("qrc:///app.qml")));
    view.show();
    return a.exec();
}

ただし、Qt Quick Applicationプロジェクトに参加することは賢明な選択です。

于 2014-10-24T21:56:03.447 に答える