qt - 在 QML 中重用委托(delegate)组件

标签 qt qml qt5 qqmlcomponent

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

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

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

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

TableView {
   itemDelegate: myitem
}

error: Unable to assign QQuickItem to QQmlComponent

这是因为 itemDelegate 是一个 Component:

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

因此 QML 可以在嵌入时将 Item 转换为 Component,但在引用时不能。

我不能把它变成一个组件,因为组件不能有函数、加载器、属性等。

如何重用我的委托(delegate)?

最佳答案

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

Component {
   Item{...}
}

关于qt - 在 QML 中重用委托(delegate)组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25062022/

相关文章:

qt - 在 QML 应用程序启动后立即执行 JS 代码

c++ - 使用 QFile 读取多个文件

c++ - Qt图表,系列不显示

qt交叉编译

c++ - 我是否正确重构了 Qt Wiki 中的这个示例?

c++ - posix信号 react 时间

c++ - Qt5 C++ 自动点击鼠标

c++ - 如何从 Qt 应用程序通过 ODBC 连接到 MySQL 数据库?

qml - 如何在 QML swipeview 中实现翻页按钮

qt - QML,GridView 委托(delegate) : ReferenceError: `<variable_name>` is not defined