モデルデータが更新された後で、ビューを更新するための自分のコードで問題が発生しました。ビュー固有のSimpleTreeModelの例を更新していないQT MVCパターン
次に、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";
}
次のリンクは、あなたが言う例を示していますが、この場合は編集可能にしています。 http://doc.qt.io/qt-5/qtwidgets-itemviews-editabletreemodel-example.html – eyllanesc
私はモデルがQAbstractItemモデルに基づいていると仮定しますか?最初の手でQStandardItemModelを使ってみてください。 QAbstractItemModelに関して、必要なすべての関数を実際に実装し、実際に必要な通知関数をすべて呼び出す必要があります。 – Tob
コメントありがとうございます。 @eyllanesc:編集可能な例のタイマーと同じテストを行いましたが、それも更新されません。 – Mikkie