у меня есть 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
?
использование QStringListModel::stringList()
, он возвращает все текущие элементы из модели, которую вы видите в Посмотреть список виджет, включая любые модификации (добавление, удаление строк).
В конце onClick_add
Слот вы можете добавить:
_locations = _model->stringList();
Других решений пока нет …