Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.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从相对URL创建组件_Qt_Qml_Qt5_Qqmlcomponent - Fatal编程技术网

Qt从相对URL创建组件

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()的文件

因此,我使用以下方法创建一个对象:

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:///...
格式?