[英]QT MVC pattern not updating view - specific SimpleTreeModel example
我在自己的代碼中遇到了問題,無法在更新模型數據后更新視圖。
然后我從 QT 中獲取 SimpleTree 示例,並在 TreeModel 中添加一個計時器以在 10 秒后更改數據,然后調用構造函數中使用的相同設置數據函數來更新模型。 下面是在計時器超時時執行的插槽的代碼。 無論我嘗試什么,視圖都不會更新。 setDate 和 emit dataChanged 是一些嘗試。
在我自己的代碼中,我有一個 XML-RPC 調用來更新數據,但考慮到我什至沒有讓 simpleTreeModel 工作,我想這將是一個漫長的過程。
我在這里缺少一些基本的東西嗎?
void TreeModel::slotTimeout(void)
{
QStringList tmp;
tmp << "qaz";
tmp << "wsx";
tmp << "edc";
setupModelData(tmp,rootItem);
setData(QModelIndex(),QModelIndex());
emit dataChanged(QModelIndex(), QModelIndex());
qDebug() << "Timer update";
}
SimpleTreeModel 示例僅適用於靜態模型。 它缺少更新模型所需的 QAbstractItemModel 函數的實現。
查看模型文檔的詳細描述,以了解應該實現什么。
問題是,所需的方法默認實現為空方法,因此如果缺少某些內容,您將不會收到任何錯誤消息。 它不會工作。
此外,執行必要的數據更改發出有點棘手。
在setData方法中,您必須emit dataChanged()
。
在同樣必要的insertRows 中,您必須調用方法beginInsertRows(...)
和endInsertRows()
以獲得發出的所需信號。
MV 范式的第一種方法是使用QStandardItemModel 。 如果QStandardItem就足夠了,它會提供所有必要的實現。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.