有没有办法可以找出我所看到的QTreeWidgetItem
是否是顶级?如果项目是顶级(没有父级),当我尝试获取父级文本时,程序会崩溃。
答案 0 :(得分:23)
顶级的主要区别 项目和较低级别的项目 树是顶级项目没有 父()的。可以使用此信息 告诉项目之间的区别, 并且在插入时知道很有用 并从树中删除项目。
if (!node.parent()) {
// top-level item
}
答案 1 :(得分:3)
我建议您检查QTreeWidgetItem的父级是否为NULL。
const int FIRST_NODE_INDEX = 0;
QTreeWidget* pTreeWidget = new QTreeWidget(this);
pTreeWidget->setColumnCount(1);
QList<QTreeWidgetItem *> ItemList;
for (int i = 0; i < 10; ++i)
{
ItemList.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(QString("item: %1").arg(i))));
}
pTreeWidget->insertTopLevelItems(0, ItemList);
if(!ItemList.at(FIRST_NODE_INDEX)->parent())
{
qDebug() << "is TopLevel";
}
希望它有所帮助!
答案 2 :(得分:2)
treeWidget->indexOfTopLevelItem(item) > -1
答案 3 :(得分:2)
顶级项目没有父项目。
bool isTopLevelItem( QTreeWidgetItem* aItem )
{
return ( aItem->parent() == nullptr );
}
或使用lambda函数。
void function()
{
// ...
auto isTopLevel = []( QTreeWidgetItem* aItem ){ return ( aItem->parent() == nullptr ); };
// ...
if ( isTopLevel( item ) )
{
// ...
}
}