Qt:当QListView获得新条目时,如何更新QStringList

Qt: How to update QStringList when QListView gets new entries

本文关键字:何更新 更新 QStringList QListView 新条目 Qt      更新时间:2023-10-16

我有一个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时,它会保存代码第一行的原始列表,即使我添加了新项目。

每当我在_listView中创建新条目时,如何使代码更新_locations,或者至少如何获取在_listView中可见的列表?

使用QStringListModel::stringList(),它从模型中返回所有当前项,即您在listview小部件中看到的项,包括任何修改(添加、删除行(。

onClick_add插槽的末尾,您可以添加:

_locations = _model->stringList();