python - 在 QTreeView 中使用自定义角色而不是 DisplayRole

标签 python qt model pyqt

一个简单的问题,(希望有一个简单的答案)。

默认情况下,QTreeView 在获取要显示的行时会将 Qt.DisplayRole 传递给模型的数据函数。 但是如果我想传递“MyAwesomeTreeDisplayRole”而不是 Qt.DisplayRole,我需要做什么?
我似乎找不到任何关于 View 决定在何处使用 displayrole 或如何覆盖它的信息。

就在你问我为什么要做这么糟糕的事情之前..

基本上,我的 QAbstractItemModel 旨在可用于 TreeView (1 列)和 TableView (多列,基于父级)。
对两种类型的 View 使用相同的 DisplayRole 并没有真正起作用,因为那时我被迫为两者返回相同的数据。当我想返回几列的串联时,这导致我只能看到 TreeView 中的第一列。

我认为最简单的方法是只使用自定义角色(TreeDisplayRole 和 TableDisplayRole)。

提前致谢。

最佳答案

我不知道,如何在python , 但你必须创建你的 own delegate渲染项目数据。委托(delegate)实际上是对象,它从索引请求任何数据并呈现它

请注意,在常见情况下 QTreeView 能够显示多列,你应该只有columnCount为顶级索引正确设置in

关于python - 在 QTreeView 中使用自定义角色而不是 DisplayRole,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8860192/

相关文章:

关闭控制台时 C++/Qt 运行函数

c++ - 为什么Qt代码中的QChar是传值而不是const引用?

qt - QSplitter 有一个固定大小的小部件和一个可变大小的小部件?

python - Pandas : columns sample based on row value

python - 如何检测给定掩码的对象的像素位置 - OpenCV Python

android - python sl4a unicode (Android)

python - django 如何从同一模型中获得多个外键

iphone - 如何在两个不同的核心数据模型之间共享实体

asp.net-mvc-3 - MVC 3客户端验证,模型绑定(bind)十进制值和文化(不同的小数分隔符)

javascript - 如何在 CodeMirror 编辑器中使用 selenium 模拟关键事件