6

私のプロジェクトでは、QML リスト ビューを使用していくつかのデータのリストを表示する必要があります。使用している QT のバージョンは QT 5.0.2 です。このバージョンの Qt ではスクロール バー ビューを使用できないため、このに従って実装することができました。

現在、データ ソースは、データの範囲を要求する C++ API を提供する別のコンポーネントです。また、データ セット内の要素の数は膨大になる可能性があります (数万単位)。

要件を達成するために、以下の手順に従いました。

  1. QAbstractListModel から継承する C++ クラスを作成し、rowCount、data、canfetchmore および fetch more 関数をオーバーライドしました。
  2. QML では、C++ のインスタンスをモデルと呼んでいます。
  3. fetchmore() 関数が呼び出されるたびに、別のコンポーネントによって提供される C++ API を使用して次のデータ セットを要求し、それをリスト モデルに追加します。

これまでのところ、それは良いです。しかし、私はいくつかの説明が必要です -

  1. リストモデルにデータを追加し続けると、リストに何千もの要素を保存することになります(私はそれをしたくありません)。リストの要素数を制限してリングバッファとして使いたい。これは可能ですか?
  2. fetchmore の QModelIndex パラメータが無効な Index として受信されます。なんで?
  3. ケースを想定します: アルファベットがスクロールバーに記載されており、ユーザーがスクロールバーで Y を選択すると、Y で始まる要素をフェッチする必要があります。ここで、外部コンポーネントからデータをフェッチし、リスト モデルを新しいデータでリセットできます。しかし、そうすると、リストは Y 要素で始まり、上にスクロールして前の要素を取得することができなくなります。-- これを達成する他の方法はありますか?
  4. また、膨大なデータセットを要求すると、他のコンポーネントにかなりの時間がかかります (たとえば、ポイント 3 で述べたような場合) - このケースを処理するためのより良い設計を行うための提案はありますか?
  5. fetchmore() 以外に、モデルを動的に更新する方法はありますか。

質問への回答を得るために Google でかなりの時間を費やしましたが、失敗しました。:(

どんな助けでも感謝します。前もって感謝します。

4

0 に答える 0