12

すでにインスタンス化されているQAbstractListModelサブクラス内で、各列にデータを含む行を追加し、関連するQListViewに新しい行を表示させるにはどうすればよいですか?

それを行う唯一の方法は、モデル内でinsertRowとsetDataを再実装し、次に別の関数内である種の順序でそれらを一緒にハックして行を追加することだと思われます。私はこれをしなければなりませんか?確かに、Qtは新しい行を簡単に追加できるようにする必要があります。

どうもありがとう!-ダニー。

4

2 に答える 2

16

beginInsertRows() と endInsertRows() の間で、モデルのデータ ストレージを変更するだけです。

たとえば、フラット リスト モデルがあり、そのモデルがデータを QVector m_data に内部的に格納しているとします。リストの前に追加したい、つまり位置 0 に行を挿入したい:

beginInsertRows( QModelIndex(), 0, 0 ); //notify views and proxy models that a line will be inserted
m_data.prepend( somedata ); // do the modification to the model data
endInsertRows(); //finish insertion, notify views/models
于 2011-01-16T16:08:13.780 に答える
1

私はあなたがそのようにしなければならないことを恐れています。ドキュメントから:

サイズ変更可能なリストのようなデータ構造へのインターフェースを提供するモデルは、insertRows()およびremoveRows( ) の実装を提供できます。

于 2011-01-16T07:54:07.967 に答える