这个问题是对以下两个问题的升级:
情况如下:
MODEL 有一个指向 SERVER 的指针(SERVER 代表Data),通过它获取所需的数据并将它们格式化为QStrings
,以便 VIEW 可以理解它们。该模型不保留 的内部副本QList
,它直接访问它并将 requ 转换QTcpSocket *
为QStrings
方法中的QVariant QAbstractItemModel::data
。
但是,如果建立了与 SERVER 的新连接,则套接字列表可能会在模型或视图不知道的情况下更改。在这种情况下,另一个QTcpSOcket *
附加到 SERVERs QList。
如何通知视图模型/数据更改?
QAbstractItemModel::reset()
在每个新连接上从 SERVER调用。我认为这很糟糕,因为它需要根据模型的需要修改服务器,在这种情况下,我可以将模型和服务器作为一个实体。connect(&server, QTcpServer::newConnection, &model, &StationListModel::reset)
尝试通过 Signals 和 Slots 连接 SERVER 和 MODEL。但是,&StationListModel::reset
ISN 不是插槽,所以我认为这不是正确的方法。
我想听听在给定的情况下,哪些方法(如果有的话)被认为是合适的。坚持 MODEL-SERVER 松耦合是一个糟糕的设计选择吗?