Qt从相对URL创建组件

时间:2014-10-19 00:33:32

标签: qt qml qt5 qqmlcomponent

the 4.8 docs中,指定:

  

使用具有相对路径的文件时,路径应该相对于执行Qt.createComponent()的文件。

所以我使用以下内容创建一个对象:

Qt.createComponent("./foo/bar.qml").createObject(_this)

但我收到错误:

  

QQmlComponent:组件未就绪

我也试过(没有运气)"foo/bar.qml"。使用目录结构更改为"foobar.qml"可以正常工作:

./
 +--foo/
 |     `--bar.qml
 `--foobar.qml

我注意到the version 5 docs中没有提到相对网址,所以有一种新方法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

我怀疑这与相对路径直接相关。 “组件未就绪”错误表示您在组件准备好之前调用createObject()。相反,您需要侦听组件的statusChanged信号,并仅在状态更改为Component.Ready时创建对象。

请查看Dynamic QML Object Creation from JavaScript以获取完整示例和更多详细信息。