Как открыть новый лист с той же моделью, при нажатии по элементу старого?
У меня qt creator версии 4.9.1. Если вкратце, моя задача представляет из себя что-то вроде файловой системы. Есть список. В этом списке есть папки и файлы. Где-то только файлы, а где-то и то и это. Что требуется: загружается список, он с папками. Я нажимаю на любой элемент в списке, и этот список должен меня перебросить на другой подобный список, но с новыми элементами. И т.д. Проблема: не получается передать новые данные на новую страницу.
Вот так я делаю в qml (по нажатию по элементу списка):
onClicked: {
_myModel.getList(_folderName.text)
pageStack.push(Qt.resolvedUrl("SubListPage.qml"), {}, PageStackAction.Animated);
}
Вот функция, отвечающая за обновление элементов в списке (в самом коде я использую два разных QList, первый (list) для самой первой страницы, второй ('newList') для второй страницы, второй список должен отвечать за последующие переходы):
Q_INVOKABLE void MyModel::getList(QString folderName)
{
...
for(int i = 0; i < nodes.count(); i++)
{
append(i, folder["title"].toString()); //здесь всё прекрасно заполняется
}
size = newList.size(); //обновление размера списка
}
void myModel::append(int index, QString itemName)
{
emit beginInsertRows(QModelIndex(), index, index);
newList.append(itemName); //здесь, если вывести через qDebug, тоже всё заполняется
emit endInsertRows();
}
А в главной функции, отвечающей за роли и данные:
QVariant myModel::data(const QModelIndex& index, int role) const
{
if (role == MainItemRole)
return list.at(index.row());
if (role == ItemRole)
{
return newList.at(index.row()); //список пустой
}
return QVariant();
}
почему-то пусто. Так же, я обновляю размер списка для функции в getList(...):
int myModel::rowCount(const QModelIndex &) const
{
return size;
}