【发布时间】:2016-01-01 12:19:54
【问题描述】:
我有一个QTreeView 或一个QStandardItemModel。我正在使用自定义委托绘制/编辑数据。在createEditor 方法中,我使用parent.window() 访问整个应用程序的主窗口(请参阅下面链接到另一个问题的一些代码)。
问题:委托中createEditor 的父级是什么?它使用以下参数定义:
def createEditor(self, parent, option, index)
令人困惑的是,当 QStyledItemDelegate 初始化时,我为 那个打印 type(parent),我得到了树(我让这个委托显示的树)。这是我所期望的。但是,当我在createEditor 方法实现中执行相同操作并打印type(parent) 时,它只会返回QWidget。当我运行parent.metaObject().className() 时,我得到了同样的结果,这是我从这里得到的建议:
QT : get the class name of an object
当我尝试提取在树视图中定义的属性时,例如parent.rootItem,我收到属性错误。那么,这里发生了什么?我的编辑器的父级是什么?
PyQt documentation 没有太多帮助:
parent 参数,如果不是 None,则导致 self 归 Qt 所有 而不是 PyQt。从重新实现 QAbstractItemDelegate.createEditor()。返回用于编辑的小部件 index 指定的项目进行编辑。父小部件和样式 选项用于控制编辑器小部件的显示方式
请注意,这一切都是由解决此处 cmets 中讨论的不同问题的解决方案开始的:
【问题讨论】:
-
老天,当我问这个问题时,我陷入了困境——我希望我知道
QProxyStyle
标签: python qt pyqt pyside qstyleditemdelegate