2

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

这是我的代码的简化版本:

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. 为什么?我以为更改模型后视图会自动更新,但似乎并非如此。你有想法吗?

4

1 回答 1

2

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

使用这样的东西:

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

这将起作用,尽管setStringList()会导致完整的、可能昂贵的模型重置。但是,似乎没有办法解决这个问题QStringListModel

于 2013-06-28T18:58:25.047 回答