qt模型中的角色是什么?setRoleNames()做什么? 在QML中,我必须使用某种C++ QT模型。我已经有了QStandardItemModel,但由于所谓的setRoleNames(),它在QML中不起作用。我一直在寻找一些角色的解释,但我似乎找不到。我在qml()中找到了使用QStandardItemMOdel的某种解决方案,但它使用“角色”,所以我不理解它是如何工作的
qt模型中的角色是什么?角色只是访问模型数据时使用的附加选择器。具体如何解释角色取决于模型和视图。当您使用模型时,您必须决定使用哪些角色,并牢记模型的行为。角色允许您将各种属性附加到每个数据项 让我们看一个具体的例子。qt模型中的角色是什么?setRoleNames()做什么? 在QML中,我必须使用某种C++ QT模型。我已经有了QStandardItemModel,但由于所谓的setRoleNames(),它在QML中不起作用。我一直在寻找一些角色的解释,但我似乎找不到。我在qml()中找到了使用QStandardItemMOdel的某种解决方案,但它使用“角色”,所以我不理解它是如何工作的,c++,qt,qml,roles,C++,Qt,Qml,Roles,qt模型中的角色是什么?角色只是访问模型数据时使用的附加选择器。具体如何解释角色取决于模型和视图。当您使用模型时,您必须决定使用哪些角色,并牢记模型的行为。角色允许您将各种属性附加到每个数据项 让我们看一个具体的例子。QStringListModel忽略所有角色,但EditRole和DisplayRole除外。如果使用任何其他角色,将忽略数据访问操作。您可以使用任一角色设置字符串,所使用的角色将由dataChanged()信号指示。您可以使用任一角色访问该字符串。这是经过设计的,旨在用于断开绑定
QStringListModel
忽略所有角色,但EditRole
和DisplayRole
除外。如果使用任何其他角色,将忽略数据访问操作。您可以使用任一角色设置字符串,所使用的角色将由dataChanged()
信号指示。您可以使用任一角色访问该字符串。这是经过设计的,旨在用于断开绑定链
角色的名称作为模型的属性公开。例如,如果要将代理中的文本编辑
绑定到模型,可以执行以下操作:
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++项目模型定义了按名称显示和编辑角色。如果您有一个自定义模型并希望提供其他名称,那么在Qt5中,您应该重新实现qabstractemmodel::roleNames()
,以返回哈希。当然,所说的散列应该包含显示
和编辑
角色!在Qt4中,您需要使用setRoleNames()
,因为roleNames()
不是虚拟的
我在中提供了一个完整的示例