更新針對這一問題是在以下兩個問題升級:Qt的模型視圖,對鬆散耦合的模型和數據
這裏的情況是:
MODEL有一個指向SERVER的指針(SERVER代表Data),通過它指定所需的數據並將它們格式化爲QStrings
,以便VIEW可以理解它們。該模型不保留QList
的內部副本,它直接訪問它並將中的QStrings
轉換爲QVariant QAbstractItemModel::data
方法。
但是,如果建立了與SERVER的新連接,則無需模型或視圖就可以更改套接字列表。在這種情況下,另一個QTcpSOcket *
被附加到SERVER QList。
如何通知模型/數據更改的視圖?
從每個新連接上的SERVER調用
QAbstractItemModel::reset()
。我認爲這不好,因爲它需要修改SERVER以滿足MODEL的需要,在這種情況下,我可以將MODEL和SERVER作爲一個單獨的實體。connect(&server, QTcpServer::newConnection, &model, &StationListModel::reset)
嘗試通過信號和插槽連接SERVER和MODEL。但是,&StationListModel::reset
不是一個插槽,所以我認爲這不是正確的方法。
我想聽聽哪種方法(如果有的話)在給定的情況下被認爲是適當的。而且是堅持MODEL-SERVER鬆耦合一個糟糕的設計選擇?