Python rowCount()和hasChildren()之间的区别是什么?

Python rowCount()和hasChildren()之间的区别是什么?,python,qt,pyqt5,qt5,pyside2,Python,Qt,Pyqt5,Qt5,Pyside2,我想将QtCore.QSortFilterProxyModel作为子类,我发现它有两个在函数上非常相似的类方法 rowCount()和haschilds() 我可以使用rowCount()==0来确定是否有子项。为什么我需要一个单独的类方法haschilds() 他们的角色有什么不同?haschilds()必要吗?rowCount()与haschilds()不同,因为第一个表示行数,如果有子行,则第二个表示行数。正如您刚才指出的,当您将rowCount与零进行比较时,它们似乎是等价的。例如,如果

我想将
QtCore.QSortFilterProxyModel
作为子类,我发现它有两个在函数上非常相似的类方法

rowCount()
haschilds()

我可以使用
rowCount()==0
来确定是否有子项。为什么我需要一个单独的类方法
haschilds()

他们的角色有什么不同?
haschilds()
必要吗?

rowCount()与haschilds()不同,因为第一个表示行数,如果有子行,则第二个表示行数。正如您刚才指出的,当您将rowCount与零进行比较时,它们似乎是等价的。例如,如果模型没有列(columnCount()==0),但是有行(rowCount()>0),那么它会有子项吗?不,这就是为什么在各种模型中,QModelIndex被验证为有效的,并且列或行的数量大于零


因此,如果要验证QModelIndex是否有子级,最好使用
haschilds()
而且它更具可读性。

它们是相互影响还是独立计算?@g2m.agent正如我在回答中明确指出的:haschilds取决于行数:这就是为什么在各种模型中,QModelIndex被验证为有效,并且列数或行数大于零。但无论如何,最好有一个显式方法hasChildren,它允许对应用程序进行简单的读取。为什么这个函数有这么多问题?这些功能有什么问题?我想我明白了。有效数据至少有1行+1列,但由于某些原因,无效数据可能有1行+零列。此时,需要进行总体判断:IF(行>0列>0):hasChildren=True;