【发布时间】:2013-06-21 17:41:35
【问题描述】:
在 Qt 中,您在 QAbstractItemModel 中有这个例程(以及其他)
bool insertRows(int row, int count, const QModelIndex &parent = QModelIndex());
如果未指定 parent,则每次调用它时基本上都会实例化一个新的 QModelIndex。
在python中,同一行的含义大不相同:每次调用时只会实例化和共享一个QModelIndex
我不清楚的一点是 PyQt 是如何处理这种差异的。 documentation 似乎是从 C++ 自动生成的,因此默认参数实例化使用相同的语法,但含义完全不同,因此问题未得到解决。
这个问题当然会在 QAbstractItemModel 的 PyQt 中进行自定义重新实现。你应该声明
def insertRows(self, row, count, index=QtCore.QModelIndex()):
或
def insertRows(self, row, count, index=None):
如果索引为None,则实例化一个新的QModelIndex?
【问题讨论】:
-
如果你使用
QModelIndex()作为默认参数,你可以使用isValid()方法,如果你使用None你必须检查无然后isValid()方法所以我推荐使用@987654329 @instance 作为默认值。据我所知,这是唯一的区别。 -
@rebus,据我了解,要求是:如果没有传递
parent的实际参数,则分配QModelIndex的新实例 - 不要使用现有的实例。 @Stefano,我说的对吗?