IscanderChe
22 июня 2020 г. 17:54

Вставка данных в древовидную модель

День добрый.

Пытаюсь реализовать вставку данных в древовидную модель следующим образом:

  1. if(m_model->insertRow(m_model->rowCount(currentIndex), currentIndex))
  2. {
  3. m_model->setData(m_model->index(m_model->rowCount(currentIndex) - 1, DataBase::E_COLUMN_DESCRIPTION), description);
  4. m_model->setData(m_model->index(m_model->rowCount(currentIndex) - 1, DataBase::E_COLUMN_CATEGORY), category);
  5. }

insertRow отрабатывает нормально и вставляет новую запись куда следует, в конец ветки родителя. А вот setData вставляет данные в родителя. Как правильно вычислить индекс только что созданной записи?

2

Вам это нравится? Поделитесь в социальных сетях!

3
Evgenii Legotckoi
  • 23 июня 2020 г. 15:43
  • Ответ был помечен как решение.

Добрый день.

Обычно в древовидных моделях используется QModelIndex на parent объект.

Возможно, что стоило бы как-то так делать

  1. if(m_model->insertRow(m_model->rowCount(currentIndex), currentIndex))
  2. {
  3. m_model->setData(m_model->index(m_model->rowCount(currentIndex) - 1, DataBase::E_COLUMN_DESCRIPTION, PARENT_INDEX), description);
  4. m_model->setData(m_model->index(m_model->rowCount(currentIndex) - 1, DataBase::E_COLUMN_CATEGORY, PARENT_INDEX), category);
  5. }
    IscanderChe
    • 23 июня 2020 г. 17:08

    Да, получилось, спасибо!

    Только теперь не показывается треугольник раскрытия ветки (см. картинку в прицепе, элемент "D4 - C4").

      Evgenii Legotckoi
      • 23 июня 2020 г. 17:12
      • (ред.)

      в ставке строк тоже есть parent

      bool QAbstractItemModel::insertRows(int row, int count, const QModelIndex &parent = QModelIndex())
      bool QAbstractItemModel::insertRow(int row, const QModelIndex &parent = QModelIndex())

        Комментарии

        Только авторизованные пользователи могут публиковать комментарии.
        Пожалуйста, авторизуйтесь или зарегистрируйтесь
        • Последние комментарии
        • Evgenii Legotckoi
          16 апреля 2025 г. 17:08
          Благодарю за отзыв. И вам желаю всяческих успехов!
        • IscanderChe
          12 апреля 2025 г. 17:12
          Добрый день. Спасибо Вам за этот проект и отдельно за ответы на форуме, которые мне очень помогли в некоммерческих пет-проектах. Профессиональным программистом я так и не стал, но узнал мно…
        • AK
          1 апреля 2025 г. 11:41
          Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…
        • Evgenii Legotckoi
          9 марта 2025 г. 21:02
          К сожалению, я этого подсказать не могу, поскольку у меня нет необходимости в обходе блокировок и т.д. Поэтому я и не задавался решением этой проблемы. Ну выглядит так, что вам действитель…
        • VP
          9 марта 2025 г. 16:14
          Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…