Qt从相对URL创建组件
在中,规定: 使用具有相对路径的文件时,路径应相对于执行qt.createComponent()的文件 因此,我使用以下方法创建一个对象:Qt从相对URL创建组件,qt,qml,qt5,qqmlcomponent,Qt,Qml,Qt5,Qqmlcomponent,在中,规定: 使用具有相对路径的文件时,路径应相对于执行qt.createComponent()的文件 因此,我使用以下方法创建一个对象: Qt.createComponent("./foo/bar.qml").createObject(_this) 但我得到了一个错误: QQmlComponent:组件未就绪 我也尝试过(没有运气)“foo/bar.qml”。更改为“foobar.qml”效果良好,目录结构如下: ./ +--foo/ | `--bar.qml `--fooba
Qt.createComponent("./foo/bar.qml").createObject(_this)
但我得到了一个错误:
QQmlComponent:组件未就绪
我也尝试过(没有运气)“foo/bar.qml”
。更改为“foobar.qml”
效果良好,目录结构如下:
./
+--foo/
| `--bar.qml
`--foobar.qml
但是,我注意到中没有提到相对URL,所以有没有一种新的方法可以做到这一点,而我却没有?我怀疑这是否与相对路径直接相关。“Component is not ready”(组件未准备就绪)错误表示您正在组件准备就绪之前调用
createObject()。相反,您需要监听组件的statusChanged
信号,并仅在状态更改为component.Ready
时创建对象
查看完整示例和更多详细信息。当我尝试从不存在的文件创建时,也会收到该错误;因此我的假设。@OllieFord如果是这样的话,我会仔细检查以确保您运行的可执行文件与QML文件所在的路径相同。我必须是,我使用的Qt Creator具有(不完整的)项目结构,如OP中所示。从项目根目录打开可以正常工作,但从子目录打开不行。此外,我可以通过执行while(cmpnt!==Component.ready){}来验证它是否从未准备好;cmpnt.createObject(\u this)
,它刚刚挂起。请尝试输出组件::errorString()
,以获取更多诊断信息,他们是否接受中的urlfile:///...
格式?