Qt QTreeView Проверить, развернута ли выбранная папка и осуществляется ли навигация по дереву - PullRequest
0 голосов
/ 15 мая 2018

Я хочу реализовать ручное управление объектом QTreeView в Qt.(Это означает, что будет программный контроль всего, включая навигацию). До сих пор я реализовал навигацию / выбор в братьях и сестрах.Тем не менее, я хочу установить состояние, в котором легче контролировать, есть ли расширенные папки или нет.Если в Qt API такой подход не реализован, мне нужно будет узнать, развернут ли выбранный элемент папки или нет.

Например, для проверки, является ли элемент папкой, я проверяю свою модель каталогов и сравниваю строки (я знаю, что это не лучший способ, но я не знаю, поддерживает ли это также Qt API):

int MainWindow::checkIfFolder_treeview (void)
{
    /* Check if highlighted item is a folder by checking type name*/
    QModelIndex index_foldersearch = ui->treeView->currentIndex().sibling(ui->treeView->currentIndex().row(), 2);
    QVariant data_foldersearch = ui->treeView->model()->data(index_foldersearch);
    //qDebug() << "typeName:" << data_foldersearch.toString();
    if (QString::compare("Folder", data_foldersearch.toString()) == 0)
    {
        /* Selected item is a folder!*/
        return 0;
    }
    else
        return -1;
}

Чтобы перейти к следующему пункту, я использую:

ui->treeView->setCurrentIndex(ui->treeView->currentIndex().sibling(ui->treeView->currentIndex().row()+1, 0));

ui->treeView->selectionModel()->select(ui->treeView->currentIndex(), QItemSelectionModel::ClearAndSelect | QItemSelectionModel::Rows);

Возвращаясь к исходным вопросам, любая помощь в отношении:

  • , определяющая, является ливыбранный элемент - это развернутая или не развернутая папка
  • , с которой легко перемещаться по элементам (функция следующего элемента и функция предыдущего элемента) без различия между родственными, родительскими или дочерними функциями

с благодарностью.

1 Ответ

0 голосов
/ 16 мая 2018

Документация имеет функцию "isExpanded", просто передайте индекс модели.

http://doc.qt.io/qt-5/qtreeview.html#isExpanded

Для навигации вы можете использовать функции indexAbove и indexBelow.ссылки на документацию приведены ниже

http://doc.qt.io/qt-5/qtreeview.html#indexAbove

http://doc.qt.io/qt-5/qtreeview.html#indexBelow

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