更改模型后视图未更新

时间:2013-06-28 18:47:44

标签: c++ qt model-view

我正在尝试在我的程序中实现模型/视图架构但是在更改模型后视图没有更新,但我认为它应该是自动的。

以下是我的代码的简化版本:

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。为什么?我认为在更改模型后视图会自动更新,但似乎并非如此。窦你有个主意吗?

1 个答案:

答案 0 :(得分:2)

问题是最后一行。 model->stringList()会返回用作模型的QStringList副本,因此您只需修改副本,用于模型的副本保持不变。

使用类似的东西:

QStringList list = model->stringList();
list << "d";
model->setStringList(list);

虽然setStringList()将导致完整的,可能很昂贵的模型重置,但这将有效。但是,QStringListModel似乎无法解决这个问题。