Вопрос:
Я хочу получить строки из списка 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; }
Эта рекурсивная функция будет извлекать ВСЕ тексты из вашей модели. Если вы хотите получить “конкретные” данные, вам следует добавить некоторую фильтрацию. Но в основном это пройдет через все дерево.