来自委托的QML TableView访问模型属性

帕勃罗特

我有一个TableView,已经为其定义了自己的itemDelegate。现在,从该委托中,我可以使用styleData.value访问该列的值,但是我还需要访问同一项目中的其他属性,但是我找不到方法。

我需要这样做,因为文本样式需要根据项模型的其他属性进行更改。

有任何想法吗?谢谢!

莱姆

缺少一些文档。在项目委托中,您可以访问以下内容(取自的源代码TreeView.qml):

  • styleData请参阅文档
  • model (当前未记录)
  • modelData(当前未记录,对此不确定,但我想它类似于ListView

(顺便说一下,文档中还缺少什么,但有用的是styleData.role。此外,其他代表的文档也缺少一些可用的属性;最好是浏览一下QML文件的源代码并查找实例化您的委托的Loader元素。此外,您还将学习令人毛骨悚然的东西的工作原理。

使用model和行/列信息,然后可以导航到项目数据。此代码取决于模型的类型。

如果您使用的是QML ListModel,则可以使用model.getmodel.get(styleData.row)[styleData.role]应该可以正常工作(由于我很少使用,请耐心等待,请提供反馈)。

如果您使用的是C ++ QAbstractItemModel或朋友,最好是在模型类中添加一个仅包含行名和角色名的插槽,因为这是使用的信息TableView(角色号或列也没有……) 。

但是,在两种情况下,都不应在属性绑定中使用表达式!由于您没有使用属性系统访问数据,因此通知系统将无法正常工作。根据您的问题,我想您想在具有绑定的表达式中使用它。我不知道如何正确地手动听取模型中的更改。

一种替代方法是访问该行的其他项目并在那里提供属性。一些提示:

  • 从一个项目中,您可以通过使对象树上移两次(首先到达实例化您的组件的Loader,然后到达实际行),然后下移两次(首先到达特定的子对象,从而访问同一行的其他项目)加载程序,然后是其实例化的项目)。您需要知道要访问的列号(而不是角色名称),我假设您要访问第一列(索引0):

    parent.parent.children[0].item
    
  • 您可以使用每个项目中的属性来提供模型数据。假设一个简单的Text元素可能是:

    Text {
        property variant value: styleData.value // <-- Here you make it available
    
        // your other stuff
    }
    

将它们放在一起可能如下所示。在此示例中,我假设第一行包含一个整数,如果为零,则第二列应为红色。

// (within TableView)
itemDelegate: Text {
    property variant value: styleData.value
    text: styleData.value
    color: (styleData.column == 1 && parent.parent.children[0].item.value === 0)
            "red" : "black"
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

来自文件的 QML TableView

来自分类Dev

QML如何从委托中调用模型的方法

来自分类Dev

如何从C ++访问QML ListView委托项?

来自分类Dev

如何从C ++访问QML ListView委托项?

来自分类Dev

更改QML ListView的模型不会更改相应的委托

来自分类Dev

如何在QML TableViewColumn委托中访问数据?

来自分类Dev

通用QML委托,但非通用View附加属性?

来自分类Dev

QML:委托Choice中的ComboBox无法从Controls 2 tableView模型读取值。(model.display未定义)

来自分类Dev

无法在QML TableView中显示来自QSqlQueryModel的数据

来自分类Dev

来自C ++的QStandardItemModel在QtQuick / QML TableView中不可见

来自分类Dev

无法在QML TableView中显示来自QSqlQueryModel的数据

来自分类Dev

在委托的Repeater组件内访问ListView模型

来自分类Dev

来自GridView的C ++类的Qt / QML设置属性

来自分类Dev

来自GridView的C ++类的Qt / QML设置属性

来自分类Dev

来自委托函数的C#访问所有者对象

来自分类Dev

创建用于缓存属性访问器的委托

来自分类Dev

Kotlin委托如何从委托对象访问类属性

来自分类Dev

从javascript访问模型属性

来自分类Dev

从模型访问BaseController属性

来自分类Dev

Rails查询来自不同表/模型的属性

来自分类Dev

Rails查询来自不同表/模型的属性

来自分类Dev

Qml TableView-TableViewColumn-ListModel-访问嵌套对象

来自分类Dev

委托TableView中的FolderListModel

来自分类Dev

TableView 委托 - Swift

来自分类Dev

在QML中重用委托组件

来自分类Dev

在QML中重用委托组件

来自分类Dev

在QListWidget上使用QML委托

来自分类Dev

从C ++更改QML Listview委托

来自分类Dev

如何使用索引访问ListView中的委托属性

Related 相关文章

热门标签

归档