gpt4 book ai didi

qt - 对一串 QML 使用 Loader

转载 作者:行者123 更新时间:2023-12-04 18:06:56 27 4
gpt4 key购买 nike

在 Qt 5.3 中,我一直在使用 Loader用于加载屏幕的 QML 元素,在后台从 QML 文件加载 View 。现在我正在尝试动态加载 QML 字符串Qt.createQmlObject使我能够这样做,但我似乎无法让 Loader 元素一起玩。

似乎 Loader 只需要一个 URL (QUrl) 或组件 (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)
}

我的组件.qml:

import QtQuick 2.2

Rectangle {
color: "red"
}

关于qt - 对一串 QML 使用 Loader,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24099107/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com