QListWidget共享相同的模型

时间:2014-06-02 10:45:41

标签: c++ qt qlistwidget

如果我理解Qt模型的概念是正确的,那么我可以拥有多个视图,共享相同的模型,这样当模型中的数据更新时,所有使用它的视图都会相应地更新它们的视图吗? / p>

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

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

1 个答案:

答案 0 :(得分:1)

您正在尝试使用QListWidget来设置您自己的模型,这是不可能的。 你最好使用QT强加的MVC模式。您可以参考here了解如何使用MVC模式。这种方式更易于管理和纠正。您还可以为列表制作QStandardItemModel或更一般的QAbstractListModelQStringListModel模型。您可以参考here了解更多详情

但要回答你的问题,他们是你可以使用的黑客 创建QListWidget并将该小部件视为您的模型。 对于其他视图,请创建QListView并设置QListWidget返回的模型 。
对于例如参考

QAbstractItemModel* model = listWidget->model();

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

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

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

相关问题