繁体   English   中英

QStyledItemDelegate(PySide / PyQt / Qt)中createEditor的父级是什么?

[英]What is the parent of createEditor in a QStyledItemDelegate (PySide/PyQt/Qt)?

我有一个QStandardItemModelQTreeView 我正在使用自定义委托绘画/编辑数据。 createEditor方法中,我使用parent.window()访问整个应用程序的主窗口(请参见下面的链接,以链接到另一个问题的某些代码)。

问题:委托中createEditor的父级是什么? 它使用以下参数定义:

def createEditor(self, parent, option, index)

当什么是混乱是QStyledItemDelegate被初始化,并且我打印type(parent)对于这一点 ,我得到的树回来(即我做这个代理,显示树)。 这就是我的期望。 但是,当我执行同样的操作并在createEditor方法实现中打印type(parent) ,它仅返回QWidget 当我运行parent.metaObject().className() ,我得到的是相同的建议:

QT:获取对象的类名

当我尝试提取在树状视图中定义的属性时,例如parent.rootItem ,出现属性错误。 那么,这是怎么回事? 我的编辑的父母是谁?

我从PyQt文档中找不到很多帮助:

父参数(如果不是None)将导致自己归Qt而非PyQt所有。 从QAbstractItemDelegate.createEditor()重新实现。 返回用于编辑索引指定的项目的窗口小部件以进行编辑。 父窗口小部件和样式选项用于控制编辑器窗口小部件的显示方式

请注意,所有这些都是从解决另一个问题的解决方案开始的,该解决方案的注释在此处讨论:

https://stackoverflow.com/a/32928091/1886357

父级是使用委托的视图的视口小部件 视口是视图继承的滚动区域的一部分。

因此,在您的特定示例中:

    def createEditor(self, parent, option, index):
        print(parent is parent.window().tree.viewport()) # True

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM