在QML中重用委托组件

时间:2014-07-31 14:48:37

标签: qt qml qt5 qqmlcomponent

在QML中设计我的应用程序时遇到了一个奇怪的问题。以下代码有效:

TableView {
  itemDelegate: Item {
    function a() {}
    Loader {}
  }
}

我在这个项目委托中有一堆函数,属性和加载器,它是一个Item对象。当我尝试在ListView中重用此委托时出现问题。我不能这样引用它:

Item {
    id: myitem
    function a() {}
    Loader {}
}

TableView {
   itemDelegate: myitem
}

error: Unable to assign QQuickItem to QQmlComponent

这是因为itemDelegateComponent

http://qt-project.org/doc/qt-5/qml-qtquick-controls-tableview.html#itemDelegate-prop

因此,QML可以在嵌入时将Item转换为Component,但在引用时则不会。{/ p>

我无法将其作为组件,因为组件不能具有功能,加载器,属性等。

如何重用我的委托?

1 个答案:

答案 0 :(得分:4)

通过将项目包装在组件内来解决:

Component {
   Item{...}
}