Qt:QListView 获取新条目时如何更新 QStringList

Qt: How to update QStringList when QListView gets new entries

我有一个QListView _listView,型号是QStringListModel _modelQStringList_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(),它 returns 您在 listview 小部件中看到的模型中的所有当前项,包括任何修改(添加、删除行).

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

_locations = _model->stringList();