更改模型后视图未更新
View isn't updated after changing model
我试图在我的程序中实现一个模型/视图体系结构,但在更改模型后视图没有更新,尽管我认为它应该自动更新。
这是我代码的简化版本:
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。为什么?我原以为视图会在更改模型后自动更新,但事实并非如此。你有主意吗?
问题出在最后一行。model->stringList()
返回用作模型的QStringList
的副本,因此您只修改副本,用于模型的副本保持不变。
使用类似的东西:
QStringList list = model->stringList();
list << "d";
model->setStringList(list);
尽管setStringList()
将导致一个完整的、潜在的昂贵的模型重置,但这将起作用。然而,QStringListModel
似乎没有办法解决这个问题。
相关文章:
- 从C++本机插件更新Vector3数组
- QGraphicsPolygonItem在拖动时未更新QPolygonF坐标
- cmake更新缓存的变量
- 更新到莫哈韦后出现cmath错误
- OpenMP:并行更新数组总是需要减少数组吗
- 为什么我的变量没有更新,我的 LED 没有亮起?
- 指针没有更新它在void函数内部指向的值
- 如何在c++中获取要更新的值
- 已修改的LinkedList未在文本文件本身中更新
- Qt:当QListView获得新条目时,如何更新QStringList
- 更新的矢量元素不打印
- 如何使用按钮更新GTK3图像以使用C++从相机捕获图片
- 如何在ECS框架中更新组件数据和通知系统
- 从VS 2015更新3更新到VS2015更新3 d后浮点计算行为不同的原因
- 如果我想在没有更新编译器的情况下使用新功能,该怎么办?
- 如何在 C++11 中查找和更新向量中的一个嵌套结构
- (SFML)按下键时,播放器构造函数未使用正确的动画进行更新
- 在 emscripten 网页汇编正在运行期间更新进度条?
- 在运行时使用范围更新结果
- 更改模型后视图未更新