0

我的代表长大了。我想把它放在一个专用文件中。我该怎么做才能完成这项工作?我需要澄清,特别是关于如何导入和实例化委托。对于未来的读者来说,完整的操作指南会很好。

4

1 回答 1

2

您可以拥有一个属性property Component delegateComponent : Qt.createComponent("file.qml")并将其用作委托。或者直接delegate: Qt.createComponent("file.qml")

您可以将 aLoader用于委托,并将其source属性设置为所需的文件。这种额外的抽象级别允许列表中的不同项目实例化不同的 qml 文件,实际上实现了不同的委托。

通常,您不需要导入任何内容,除非您的组件已注册为外部模块的一部分。您项目的 QML 文件部分将正常工作,无需导入。

您可以单击委托组件的根对象(不是在组件上,而是在其单个允许的子组件上),转到“重构”并单击“将组件移动到单独的文件中”。这将导致Component { TheNewQMLFile { } }TheNewQMLFile替换您提升到新源的对象树的内容。它也可以以这种形式工作,无需使用前两种技术。

由于 QML 的动态范围,您也可以使用来自外部 QML 文件的模型角色,只要对象在正确的上下文中实例化,它们就会被解析,即作为具有模型的视图的委托,提供这些角色。

3种可能的方法:

delegate: Qt.createComponent("DelegateType.qml")

delegate: Component { DelegateType { } }

delegate: Component { Loader { source: "DelegateType.qml"} } // here source can come from a model role as well

实际上,似乎在 a 中显式包装Component甚至不是必须的,它也隐式发生。所以最后两个也将像这样工作:

delegate: DelegateType { }

delegate: Loader { source: "DelegateType.qml"} 
于 2016-02-08T14:26:00.543 回答