【问题标题】:QML iterate through delegate items in GridViewQML 遍历 GridView 中的委托项目
【发布时间】:2026-02-01 01:30:01
【问题描述】:

我有一个使用 ListModel 的 QML GridView。每个 ListElement 只定义一个颜色,委托读取并创建一个彩色方块。

有没有办法遍历委托实例并调用委托中定义的函数?

【问题讨论】:

  • QML 视图可以随时创建和销毁对象(基本上它们只在视口中保存对象)。因此,你想要完成什么?可能还有另一种方法可以做到这一点。
  • 正如下面对 Deadron 帖子的评论中提到的,我通过将每个委托实例的插槽连接到父容器对象的信号来实现我想要的功能。

标签: gridview qml


【解决方案1】:

恐怕这个问题对细节有点轻描淡写。如果你能解释一下你正在尝试做的事情可能会有所帮助。为什么要遍历委托并在其上调用函数?请记住,视图用于为列表模型中的每个元素呈现 QML,其中模型仅提供数据,它们并非旨在执行功能。因为 QML(我上次检查)不支持将函数分配给属性,所以您甚至无法将函数分配给 ListModel 元素。

【讨论】:

  • 在重新审视我对这个问题的措辞之后,我不得不承认它的布局很糟糕。我不熟悉 QML 中信号/插槽连接的工作方式,我能够通过将每个 Delegate 实例中的插槽连接到来自其父容器的信号来实现该功能。