gpt4 book ai didi

c++ - 更改模型后 View 未更新

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:50:04 28 4
gpt4 key购买 nike

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

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

QStringListModel *model = new QStringListModel;
QListView *view = new QListView;

view->setModel(model);

QStringList list;
list << "a" << "b" << "c";

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

问题是,我的 View 只包含 a、b 和 c。但不是 d。为什么?我以为更改模型后 View 会自动更新,但似乎并非如此。你有想法吗?

最佳答案

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

使用这样的东西:

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

虽然 setStringList() 会导致完整的、可能代价高昂的模型重置,但这会起作用。但是,QStringListModel 似乎无法解决这个问题。

关于c++ - 更改模型后 View 未更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17371601/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com