Qt: Как обновить QStringList, когда QListView получает новые записи

у меня есть QListView _listView чья модель QStringListModel _model, чья QStringList является _locations, Вот код:

_locations << "Sarajevo" << "Tesanj" << "Graz";

_model = new QStringListModel(this);
_model->setStringList(_locations);

_listView = new QListView(this);
_listView->setModel(_model);
_listView->setEditTriggers(
QAbstractItemView::EditTrigger::DoubleClicked |
QAbstractItemView::EditTrigger::AnyKeyPressed);

и слоты, которые редактируют _listView:

void Dialog_EditLocations::onKey_del()
{
QModelIndex _index;
_index = _listView->currentIndex();
_model->removeRow(_index.row());
}

void Dialog_EditLocations::onClick_add()
{
if (_edAddLocation->text() == "") return;
int row = _model->rowCount();
_model->insertRow(row);
QModelIndex _index;
_index = _model->index(row);
_model->setData(_index, _edAddLocation->text());
_edAddLocation->clear();
}

После редактирования списка в виджете представления списка, я хочу сохранить его в файле. Когда я сохраняю _locations, он сохраняет исходный список из первой строки кода, хотя я добавил новые элементы.

Как заставить код обновить _locations всякий раз, когда я делаю новую запись в _listViewили, по крайней мере, как получить список, который виден в _listView?

-1

Решение

использование QStringListModel::stringList(), он возвращает все текущие элементы из модели, которую вы видите в Посмотреть список виджет, включая любые модификации (добавление, удаление строк).

В конце onClick_add Слот вы можете добавить:

_locations = _model->stringList();
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]