У меня есть QStandardItemModel
, который я прохожу через представление, чтобы отобразить его внутри QTreeView
. Моя модель содержит 2 столбца, работающих как пары ключей и значений. Первый столбец содержит шаблон исправления ключей, а второй столбец содержит соответствующие им значения. Мое дерево примеров выглядит примерно так:
Item | Attributes
Name Tomato
|-Type Fruit
|-Color Red
Name ...
|-Type ...
Как я уже сказал, мой шаблон в первом столбце остается прежним, но значения во втором столбце вводятся пользователем.
Что я хочу:
Я хочу пройти (рекурсивно) через модель, захватив все значения из столбца Attributes
и записать их в файл
Что я уже сделал:
void Writer::writeToYaml(const std::shared_ptr<QStandardItemModel>& model,
const QString& filePath)
{
for(int r = 0; r < model->rowCount(); ++r)
{
QModelIndex index = model->index(r, 1);
QVariant data = model->data(index);
qDebug() << data;
if(model->hasChildren(index))
{
writeToYaml(model, filePath);
}
}
}
Когда я запускаю свой код, qDebug()
все время выводит только Tomato
. Я считаю, что сам цикл заканчивается в корневом узле, в результате чего получается только первое значение. Можно ли рекурсивно извлечь все элементы из определенного столбца во вложенной модели?