1

モデル内の特定のデータから QModelIndex を作成する方法を探しています。次の方法で QModelIndex からデータ項目に移動できます。

CustomData *data = static_cast<CustomData *>(modelIndex.internalPointer());

しかし、私は元になる逆関数を探しています:

QModelIndex *index = createIndex(data); // ??

単純なツリー モデルの例 ( http://doc.qt.io/qt-5/qtwidgets-itemviews-simpletreemodel-example.html ) と非常によく似たデータ間のリンクを実装しました。ビューにはデータが正しく表示されますが、かなりの遅延があります。ビューが更新されるのを待っていることがラグの原因だと思うので、 dataChanged(QModelIndex, QModelIndex) を出力してビューの更新をすぐに確認したいと思います。

リンクされた例では、TreeItem から QTreeModel の対応するインデックスに取得しようとしています。

4

2 に答える 2

-1

以下を使用しない限り、モデル/ビュープログラミングではそれらが固執しないため、従来のインデックスを使用することはできません。

QPersistentModelIndex

http://doc.qt.io/qt-5/qpersistentmodelindex.html#details

また、モデル/ビュー プログラミングで導入された多くの新しいパラダイムがあります。それとそれを使用するドキュメントには学習曲線があります... 何度か読んで、それらを使用する Qt Creator にバンドルされている例を使用してみてください。

使用方法の詳細QPersistentModelIndex

http://doc.qt.io/qt-5/model-view-programming.html#using-model-indexes

モデル インデックスは、情報への一時的な参照を提供し、モデルを介してデータを取得または変更するために使用できます。モデルは内部構造を再編成することがあるため、モデル インデックスは無効になる可能性があり、保存しないでください。情報への長期的な参照が必要な場合は、永続的なモデル インデックスを作成する必要があります。これは、モデルが最新に保つ情報への参照を提供します。一時モデル インデックスはQModelIndexクラスによって提供され、永続モデル インデックスはQPersistentModelIndexクラスによって提供されます。

データ項目に対応するモデル インデックスを取得するには、行番号、列番号、親項目のモデル インデックスの 3 つのプロパティをモデルに指定する必要があります。

于 2015-08-16T05:47:31.857 に答える