Найти, если QTreeWidgetItem - верхний уровень - PullRequest
5 голосов
/ 23 февраля 2010

Есть ли способ узнать, является ли QTreeWidgetItem, на который я смотрю, верхним уровнем или нет? У меня происходит сбой программы, когда я пытаюсь взять текст родительского элемента, если элемент верхнего уровня (без родительского элемента).

Ответы [ 4 ]

23 голосов
/ 23 февраля 2010

Цитирование Документация :

Главное отличие верхнего уровня предметы и те, в нижних уровнях Дерево в том, что элемент верхнего уровня не имеет родитель () . Эта информация может быть использована сказать разницу между предметами, и полезно знать при вставке и удаление предметов из дерева.

if (!node.parent()) {
    // top-level item
}
3 голосов
/ 23 февраля 2010

Я хотел бы предложить, чтобы вы могли проверить, является ли родитель 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 голосов
/ 23 мая 2015

У предметов верхнего уровня нет родительского предмета.

bool isTopLevelItem( QTreeWidgetItem* aItem )
{
    return ( aItem->parent() == nullptr );
}

Или с помощью лямбда-функции.

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

    if ( isTopLevel( item ) )
    {
        // ...
    }
}
2 голосов
/ 13 сентября 2011
treeWidget->indexOfTopLevelItem(item) > -1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...