在下面的示例中,尽管应该有2列,但每个子项都只有1列。树视图列计数的混淆
(MyTreeModel是化QAbstractItemModel的子类。)
int MyTreeModel::columnCount(const QModelIndex &rParent /*= QModelIndex()*/) const
{
if (rParent.isValid())
{
return 2;
}
else
{
return 1;
}
}
在以下示例中,示出QTreeView则2列父项目和子项1列按预期方式。
int MyTreeModel::columnCount(const QModelIndex &rParent /*= QModelIndex()*/) const
{
if (rParent.isValid())
{
return 1;
}
else
{
return 2;
}
}
因此,子项目的列号似乎受其父项目的列号限制。这是标准行为吗?难道我做错了什么 ?
我猜'QTreeView'根据根项目值检测所需的列数。出于性能原因,它不能遍历整个树来检测列数。验证它的最佳方法是选择'QTreeView'的源代码。 –
@MarekR是100%的权利。列计数仅为根项目计算。如果你在任何一行中都需要较少的列 - 只需不填充它们并在:: index –
@Marek R中返回无效的QModelIndex它会遍历整个树来检测列数(我使用断点检查它)。但是它不会调用MyTreeModel中的数据(..)函数来获取大于父列数 – SRF