Как удалить все строки и дочерние строки из QTreeview - PullRequest
2 голосов
/ 14 августа 2011

Я не знаю, почему у меня проблемы с удалением всех строк и вложенных строк из qtreeview

Я использую QStandardItemModel в качестве модели.Теперь вот мой код, который не работает.

В чем может быть проблема?

QModelIndex FirstQModelIndex;
QModelIndex parentQModelIndex;
int iMdlChidCound = m_model->hasChildren();
if(iMdlChidCound > 0)
{
    // only if there at list 1 row in the view 
    FirstQModelIndex = m_model->item(0,0)->index();
    QStandardItem* feedItem = m_model->itemFromIndex(FirstQModelIndex);
    // get the parent of the first row its the header row 
    QStandardItem* parentItem = feedItem->parent();


    // here im getting exception 
    int parent_rows= parentItem->hasChildren();
    parentQModelIndex = m_model->indexFromItem(parentItem);


    // now i like to delete all the rows under the header , and its dosnt work 
    if(parent_rows>0)
    {
        bool b = feedItem->model()->removeRows(0,y,parentQModelIndex);
    }
}

Ответы [ 2 ]

8 голосов
/ 14 августа 2011

Кажется, что многое из того, что вы делаете, является излишним. Если ваша единственная цель - удалить все строки из модели, вы можете просто использовать QStandardItemModel :: clear

В своем коде вы перемещаетесь между моделью и элементами так, как вам не нужно.

if(m_model->hasChildren()) {
    m_model->removeRows(0, m_model->rowCount());
}

Это должно делать то, что вы ищете.

1 голос
/ 11 февраля 2016

QStandardItemModel :: ясно ()

, который очищает все элементы, включая строки заголовка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...