Qt:QListView 获取新条目时如何更新 QStringList
Qt: How to update QStringList when QListView gets new entries
我有一个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()
,它 returns 您在 listview 小部件中看到的模型中的所有当前项,包括任何修改(添加、删除行).
在 onClick_add
槽的末尾,您可以添加:
_locations = _model->stringList();
我有一个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()
,它 returns 您在 listview 小部件中看到的模型中的所有当前项,包括任何修改(添加、删除行).
在 onClick_add
槽的末尾,您可以添加:
_locations = _model->stringList();