查找QTreeWidgetItem是否为顶级

时间:2010-02-23 18:53:57

标签: c++ qt

有没有办法可以找出我所看到的QTreeWidgetItem是否是顶级?如果项目是顶级(没有父级),当我尝试获取父级文本时,程序会崩溃。

4 个答案:

答案 0 :(得分:23)

引用the documentation

  

顶级的主要区别   项目和较低级别的项目   树是顶级项目没有   父()的。可以使用此信息   告诉项目之间的区别,   并且在插入时知道很有用   并从树中删除项目。

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 ) )
    {
        // ...
    }
}