可以使用Component.createComponent()动态加载内置QML组件



我想使用FontLoaderQML组件将字体添加到我的应用程序中。

我的第一个想法是使用Repeater,但它只支持Item派生的委托,而FontLoader不是。

然后,我的下一个想法是使用Component::createComponent(url)函数动态创建FontLoaderQML组件,但这里应该使用什么url?是否可以在不向QT_INSTALL_DIR中的QML文件提供url的情况下动态创建内置QML组件?

旁注:我知道如果我将FontLoader子类化是可能的,但如果可能的话,我想避免额外的代码。

我也知道可以使用Component::createQmlObject()从字符串创建组件,但我真的不想这么做。

您可以使用Instantiator而不是Repeater,它允许您动态创建对象,即使它们不是Itemss。

如果你仍然想强制执行,你必须使用Component:

Component {
id: fontLoaderComponent
FontLoader {}
}
//...
fontLoaderComponent.createObject(parent, {name : "Courier"}); //use it like this to create a new FontLoader

相关内容

  • 没有找到相关文章

最新更新