簡體   English   中英

QT MVC 模式不更新視圖 - 特定的 SimpleTreeModel 示例

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM