Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt 对QML字符串使用加载程序_Qt_Asynchronous_Qml - Fatal编程技术网

Qt 对QML字符串使用加载程序

Qt 对QML字符串使用加载程序,qt,asynchronous,qml,Qt,Asynchronous,Qml,在Qt5.3中,我一直在使用QML元素加载屏幕,从后台的QML文件加载视图。现在我尝试动态加载QML的字符串。使我能够这样做,但我似乎无法让加载程序元素发挥作用 似乎Loader只接受URL(qrl)或组件(QQmlComponent),但Qt.createQmlObject创建对象(QObject) 我是QML新手,但据我所知,组件是可重用的元素,类似于类,对象是这些类的实例。因此,我似乎无法理解为什么Loader不能处理对象 在(异步)解析和初始化QML字符串时,如何显示加载屏幕 QML代码

在Qt5.3中,我一直在使用QML元素加载屏幕,从后台的QML文件加载视图。现在我尝试动态加载QML的字符串。使我能够这样做,但我似乎无法让
加载程序
元素发挥作用

似乎
Loader
只接受URL(
qrl
)或组件(
QQmlComponent
),但
Qt.createQmlObject
创建对象(
QObject

我是QML新手,但据我所知,组件是可重用的元素,类似于类,对象是这些类的实例。因此,我似乎无法理解为什么
Loader
不能处理对象

在(异步)解析和初始化QML字符串时,如何显示加载屏幕

QML代码示例:

Item {
    Rectangle {id: content}

    Loader {id: loader}

    Component.onCompleted: {
        var obj = Qt.createQmlObject('import QtQuick 2.3; Rectangle {}', content);

        loader.source = obj; // Throws error.
    }
}

使用当前的API是不可能的。正如Loader的文档所述,它通过指向QML文件或组件的URL加载对象:

import QtQuick 2.0

Item {
    Rectangle {
        id: content
        anchors.fill: parent
        color: "grey"

        Loader {
            id: loader
            sourceComponent: myComponent
            anchors.fill: parent
            anchors.margins: 40
        }
    }

    property Component myComponent: Qt.createComponent("MyComponent.qml", Component.Asynchronous)
}
MyComponent.qml:

import QtQuick 2.2

Rectangle {
   color: "red"
}

嗨,米奇,谢谢你的来电。虽然这是一个很好的
加载程序
加载QML文件的示例,但实际上我正在寻找一种方法将
加载程序
应用于QML字符串。换句话说:有什么方法可以做
Qt.createComponent(QString)
而不是
Qt.createComponent(QUrl)
?没有,这就是我的答案。我已经更新了它。不过,应该有一些方法可以异步加载QML的字符串。也许我需要编写一个
加载程序
子类。不管怎样,谢谢你的意见,米奇。不用担心。您可能还想在bugreports.qt-project.org上为此创建一个建议。祝您好运。我刚刚创建了一个: