gpt4 book ai didi

c++ - qt 模型中的角色是什么以及 setRoleNames() 的作用是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:15:31 26 4
gpt4 key购买 nike

我必须在 qml 中使用某种 c++ qt 模型。我已经有了 QStandardItemModel,但由于所谓的 setRoleNames(),它在 QML 中不起作用。我一直在寻找角色的一些解释,但我似乎找不到。我找到了在 qml ( here ) 中使用 QStandardItemMODel 的某种解决方案,但它使用“角色”,所以我不明白它是如何工作的。

qt 模型中的角色是什么?

最佳答案

角色只是访问模型数据时使用的附加选择器。如何具体解释角色取决于模型和 View 。当您使用模型时,您必须在牢记模型的行为的同时决定使用哪些角色。这些角色让您可以将各种属性附加到每个数据项。

让我们看一个具体的例子。 QStringListModel 忽略除 EditRoleDisplayRole 之外的所有角色。如果您使用任何其他角色,数据访问操作将被忽略。您可以使用任一角色设置字符串,所使用的角色将由 dataChanged() 信号指示。您可以使用任一角色访问该字符串。这是设计使然,旨在用于打破绑定(bind)链。

角色的名称作为模型的属性公开。例如。如果要将委托(delegate)中的 TextEdit 绑定(bind)到模型,可以执行以下操作:

delegate: Component {
TextInput {
id: editor
text: edit // show the "edit" role of the model, to break the binding loop
onTextChanged: model.display = text // set the display role of the model
}
}

Qt 提供的 C++ 项模型按名称定义显示和编辑角色。如果您有自定义模型并想提供其他名称,在 Qt 5 中您应该重新实现 QAbstractItemModel::roleNames() 以返回哈希。当然,所述哈希应该包含 displayedit 角色!在 Qt 4 中,您需要改用 setRoleNames(),因为 roleNames() 不是虚拟的。

我在 another answer 中提供了一个完整的示例.

关于c++ - qt 模型中的角色是什么以及 setRoleNames() 的作用是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18641530/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com