C++ 查找QTreeWidgetItem是否为顶级

C++ 查找QTreeWidgetItem是否为顶级,c++,qt,C++,Qt,有没有办法确定我正在查看的QTreeWidgetItem是否为顶级?如果项目为顶级(无父项),则当我尝试获取父项的文本时,程序崩溃。引用: 顶级和顶级之间的主要区别 项目和项目级别较低的项目 树是指顶级项没有 父项()。可以使用此信息 要区分项目之间的差异, 并且在插入时了解这一点很有用 以及从树中删除项目 我建议您检查QTreeWidgetItem的父项是否为NULL const int FIRST_NODE_INDEX = 0; QTreeWidget* pTreeWidget = new

有没有办法确定我正在查看的
QTreeWidgetItem
是否为顶级?如果项目为顶级(无父项),则当我尝试获取父项的文本时,程序崩溃。

引用:

顶级和顶级之间的主要区别 项目和项目级别较低的项目 树是指顶级项没有 父项()。可以使用此信息 要区分项目之间的差异, 并且在插入时了解这一点很有用 以及从树中删除项目


我建议您检查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";
}
const int FIRST\u NODE\u INDEX=0;
QTreeWidget*pTreeWidget=新的QTreeWidget(此);
pTreeWidget->setColumnCount(1);
QList项目列表;
对于(int i=0;i<10;++i)
{
append(新的QTreeWidgetItem((QTreeWidget*)0,QStringList(QString(“项:%1”).arg(i));
}    
pTreeWidget->insertTopLevelItems(0,ItemList);
如果(!ItemList.at(第一个节点索引)->parent())
{

qDebug()顶级项没有父项

bool isTopLevelItem( QTreeWidgetItem* aItem )
{
    return ( aItem->parent() == nullptr );
}
或者使用lambda函数

void function()
{
    // ...
    auto isTopLevel = []( QTreeWidgetItem* aItem ){ return ( aItem->parent() == nullptr ); };
    // ...

    if ( isTopLevel( item ) )
    {
        // ...
    }
}
bool isTopLevelItem( QTreeWidgetItem* aItem )
{
    return ( aItem->parent() == nullptr );
}
void function()
{
    // ...
    auto isTopLevel = []( QTreeWidgetItem* aItem ){ return ( aItem->parent() == nullptr ); };
    // ...

    if ( isTopLevel( item ) )
    {
        // ...
    }
}