Qt 从相对 URL 创建组件

标签 qt qml qt5 qqmlcomponent

the 4.8 docs , 规定:

When using files with relative paths, the path should be relative to the file whereQt.createComponent() is executed.

所以我使用下面的方法来创建一个对象:

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

但是我得到了错误:

QQmlComponent: Component is not ready

我也试过(运气不好)"foo/bar.qml"。更改为 "foobar.qml" 工作正常,目录结构为:

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

但是我注意到 the version 5 docs 中没有提及相对 URL ,那么有没有一种新的方法可以做到这一点,我错过了?

最佳答案

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

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

关于Qt 从相对 URL 创建组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26446017/

相关文章:

qt - 如何在 QML 的最后一帧暂停视频?

qt - 长按后拖动

QML:初始化空列表

qt - 在 Qt5 中使用文本元素的彩色点

c++ - 为什么在 QtCreator 的 qMake 项目需要 CMake?

c++ - 如何在Qt中打印pdf文件

qt - QDir 信息已更改

c++ - QT资源丢失

qt - 在 QChartView 上实现选择

c++ - QSqlTableModel::removeRow() 不删除 SQLite 数据库中的行