0

我有一个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

4

1 回答 1

1

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

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

_locations = _model->stringList();
于 2018-10-27T14:41:53.630 回答