_inputfileModel
是QStandardItemModel
类型的指针,我想使用其成员函数children()
来获取子项。但是在以下代码中,
int childrenNum = _inputfileModel->children().size();
childrenNum
的结果不是1而是0.但是当我使用hasChildren()
时,返回值为true。有谁能解释为什么?函数children()
是否会返回给孩子或所有孩子?
void InputTree::addTreeNode(TreeNode &node){
QStringList inputImgList = node.picturePathList;
int num = inputImgList.size();
if( num < 1){ return ;}
QStandardItem *fatherItem = new QStandardItem;
fatherItem->setIcon(node.fatherIcon);
fatherItem->setText(node.fatherNodeName);
fatherItem->setData(FOLDER,ItemTypeRole);
for( int i = 0; i < num; ++i)
{
QStandardItem *pictureItem = new QStandardItem;
pictureItem->setText(node.imageNodeName.at(i));
pictureItem->setIcon(node.imgIcon);
pictureItem->setData(PICTURE,ItemTypeRole);
fatherItem->appendRow(pictureItem);
}
_inputfileModel->appendRow(fatherItem);
bool has_child = false;
has_child = _inputfileModel->hasChildren();
int childrenNum = _inputfileModel->children().size();
}
答案 0 :(得分:3)
阅读文档:
bool QAbstractItemModel :: hasChildren(const QModelIndex&amp; parent = QModelIndex())const
如果父有子女,则返回true;否则返回false。
在父级上使用rowCount()来查找子级数。
那孩子呢:
const QObjectList&amp; QObject :: children()const
返回子对象列表。
这不是你真正想要的。
因此,您应该使用QStandardItemModel::rowCount
代替children()
;