如果我理解Qt模型的概念是正确的,那么我可以拥有多个视图,共享相同的模型,这样当模型中的数据更新时,所有使用它的视图都会相应地更新它们的视图吗? / p>
现在我的应用程序中有多个小部件,它们应该有单独的选择,但它们应该在相同的底层数据上运行。因此,当在其中一个面板中添加行时,其他面板也应该能够显示此新行。
由于QListWidget
提供了我需要的所有功能,因此编写自己的模型并将其与QListView
一起使用是没有意义的。但我意识到QListWidget
不允许我更改模型,因为setModel()
方法是私有的。
那么有什么方法可以实现这一点,而不需要自己编写完整的模型?我对Qt很新,所以也许有一个现成的通用型号,我可以用吗?但到目前为止,我还没找到一个。
答案 0 :(得分:1)
您正在尝试使用QListWidget来设置您自己的模型,这是不可能的。
你最好使用QT强加的MVC模式。您可以参考here了解如何使用MVC模式。这种方式更易于管理和纠正。您还可以为列表制作QStandardItemModel
或更一般的QAbstractListModel
或QStringListModel
模型。您可以参考here了解更多详情
但要回答你的问题,他们是你可以使用的黑客
创建QListWidget
并将该小部件视为您的模型。
对于其他视图,请创建QListView
并设置QListWidget
返回的模型
。
对于例如参考
QAbstractItemModel* model = listWidget->model();
listView->setModel(model);
listView_2->setModel(model);
然后您可以使用listWidget作为模型。在listWidget上执行的任何操作(添加/删除)也会影响listView和listView_2。
我仍然认为,而不是黑客创建自己的模型会更好,更正确。