gpt4 book ai didi

c++ - QListWidget共享同一个模型

转载 作者:行者123 更新时间:2023-11-28 06:50:45 24 4
gpt4 key购买 nike

如果我正确理解 Qt 模型的概念,那么我可以有多个 View ,共享同一个模型,这样当模型中的数据更新时,所有使用它的 View 也会相应地更新它们的 View ,对吗?

现在我的应用程序中有多个小部件,它们应该有单独的选择,但它们应该对相同的基础数据进行操作。因此,当在其中一个面板中添加一行时,其他面板也应该能够显示这一新行。

由于 QListWidget 提供了我需要的所有功能,因此编写我自己的模型并将其与 QListView 一起使用是没有意义的。但我意识到 QListWidget 不允许我更改模型,因为 setModel() 方法是私有(private)的。那么有什么方法可以实现这一点,而不需要自己编写完整的模型吗?我是 Qt 的新手,所以也许有一个现成的通用模型可供我使用?但到目前为止我还没有找到。

最佳答案

您正在尝试使用 QListWidget 来设置您自己的模型,这是不可能的。您最好使用 QT 强加的 MVC 模式。可以引用here关于如何使用 MVC 模式。这种方式会更易于管理和正确。您还可以为列表创建 QStandardItemModel 或更通用的 QAbstractListModelQStringListModel 模型。可以引用here了解更多详情

但要回答您的问题,是的,它们是您可以使用的 hack。
创建一个 QListWidget 并将该小部件视为您的模型。对于其他 View ,创建一个 QListView 并设置由 QListWidget 返回的模型.
例如引用

QAbstractItemModel* model = listWidget->model();

listView->setModel(model);
listView_2->setModel(model);

然后您可以使用 listWidget 作为您的模型。对 listWidget 执行的任何操作(添加/删除)也会影响 listView 和 listView_2。

我仍然认为,创建您自己的模型而不是 hack 会更好、更正确。

关于c++ - QListWidget共享同一个模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23992672/

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