gpt4 book ai didi

qt - Qt View /模型/数据范例:如何修改数据?

转载 作者:行者123 更新时间:2023-12-02 03:58:40 25 4
gpt4 key购买 nike

我刚刚阅读了Qt 4.8的Model / View文档。我相信了解模型/ View (Delegates / SelectionModel)的工作方式。我不确定的一件事是当我有一个TreeView时如何处理数据。

想象一下,当选择一个项目/行时,有一个TreeView可以显示一个列表,还有一个按钮可以从该列表中删除元素。我在这里看到两种方法

1)在按钮的插槽中,我检索TreeView的SelectionModel和ItemModel并调用model-> removeRow(index.row ...)。这样,模型(我从QAbstractItemModel子类化了)处理了应该表示的数据。

2)在按钮的插槽中,我直接从TreeView模型代表的数据源中删除该项目。然后,我可以通过信号/插槽将数据与模型链接,这样模型就可以告诉TreeView基础数据已更改。

添加元素可以想象出相同的情况。我应该将新元素添加到数据中,以将其更改后的状态通知给通知TreeView的ItemModel,还是应该通过ItemMode添加新项目?

我还没有找到任何最佳实践文档。两种方法截然不同,因此我想先知道哪种方法更可取。

有人建议走哪条路吗?

谢谢

最佳答案

1)是可取的-您可能应该避免直接从UI代码操纵数据源-如果通过模型,您的生活会更好。至少要在模型中添加一种方法来进行数据处理,然后从UI代码中调用该方法。

您会发现Qt的某些方法受到保护,因此只能从模型本身调用它们(例如endInsertRows等)。

关于qt - Qt View /模型/数据范例:如何修改数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11392264/

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