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:错误:无法使用“QQuickItem *”类型的右值初始化“QObject *”类型的变量

这应该怎么做?

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”文件

最后,像这样重写你的 main :

#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 回答