Получить строки из списка QtreeView

Вопрос:Я хочу получить строки из списка QtreeView. В моем qtreeview у меня есть: [*] Node1 [*] Subnode1_1 test_1 test_2 [*] Node2 test_3 [*] Subnode2_1 test_4 test_5 и я хочу получить строки: test_1, test2, test3, test4, test5 Запуск запроса в базе данных. Единственное, что я нашел, это получить строку из node, которую вы выбрали. : Tree->model()->itemData(m_listOfModelIndex.at(0))[Qt::DisplayRole].toString()

Вопрос:

Я хочу получить строки из списка QtreeView.

В моем qtreeview у меня есть:

[*] Node1 [*] Subnode1_1 test_1 test_2 [*] Node2 test_3 [*] Subnode2_1 test_4 test_5

и я хочу получить строки: test_1, test2, test3, test4, test5
Запуск запроса в базе данных.

Единственное, что я нашел, это получить строку из node, которую вы выбрали.

: Tree->model()->itemData(m_listOfModelIndex.at(0))[Qt::DisplayRole].toString()

Спасибо

Лучший ответ:QStringList strings = extractStringsFromModel(Tree->model(), QModelIndex());

Реализация extractStringsFromModel

QStringList extractStringsFromModel(QAbstractItemModel *model, const QModelIndex &parent) { QStringList retval; int rowCount = model->rowCount(parent); for(int i = 0; i < rowCount; ++i) { QModelIndex idx = model->index(i, 0, parent); if(idx.isValid()) { retval << idx.data(Qt::DisplayRole).toString(); retval << extractStringsFromModel(model, idx); } } return retval; }

Эта рекурсивная функция будет извлекать ВСЕ тексты из вашей модели. Если вы хотите получить “конкретные” данные, вам следует добавить некоторую фильтрацию. Но в основном это пройдет через все дерево.

Оцените статью
Добавить комментарий