我正在尝试在我的程序中实现模型/视图架构但是在更改模型后视图没有更新,但我认为它应该是自动的。
以下是我的代码的简化版本:
QStringListModel *model = new QStringListModel;
QListView *view = new QListView;
view->setModel(model);
QStringList list;
list << "a" << "b" << "c";
model->setStringList(list);
model->stringList() << "d";
问题是,我的视图只包含a,b和c。但不是d。为什么?我认为在更改模型后视图会自动更新,但似乎并非如此。窦你有个主意吗?
答案 0 :(得分:2)
问题是最后一行。 model->stringList()
会返回用作模型的QStringList
的副本,因此您只需修改副本,用于模型的副本保持不变。
使用类似的东西:
QStringList list = model->stringList();
list << "d";
model->setStringList(list);
虽然setStringList()
将导致完整的,可能很昂贵的模型重置,但这将有效。但是,QStringListModel
似乎无法解决这个问题。