有没有办法判断我所查看的QTreeWidgetItem
是否为顶层?如果该项是顶层(没有父项),则在尝试获取父项文本时我的程序会崩溃。
引用文档:
顶层项目和较低级别的树中的项目之间的主要区别在于,顶层项目没有parent()。这个信息可以用来区分项目,并且在向树中插入和删除项目时非常有用。
if (!node.parent()) {
// top-level item
}
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";
}
bool isTopLevelItem( QTreeWidgetItem* aItem )
{
return ( aItem->parent() == nullptr );
}
void function()
{
// ...
auto isTopLevel = []( QTreeWidgetItem* aItem ){ return ( aItem->parent() == nullptr ); };
// ...
if ( isTopLevel( item ) )
{
// ...
}
}
treeWidget->indexOfTopLevelItem(item) > -1