1

これが私のユースケースです(非常に単純化されています)。

QSQLTableModel に DB からのデータがあり、それを変換する必要があります。いくつかのフィールドを 1 つにマージ (およびそのように表示) するか、1 つのフィールドを少数に分割します。モデル/ビューでこれを行う方法と場所は?

ノート:

これを行うために AbstractProxyModel を使用してみましたが、フィルタリングまたはソートにのみ適していると思います。新しいデータを割り当てて QModelIndex (データへのポインターを運ぶ) を返すことはできますが、後でデータの割り当てを解除する必要があるのはどのオブジェクトでしょうか?

ビュー オブジェクトを変更しても、すべてのテーブル セルが個別に処理されるため、役に立ちません。

データベースを変更することはできません。Qtでこれを行う方法は? 私はすでにこれに丸 2 日を費やしていますが、次から次へと壁にぶち当たります。

4

1 に答える 1

2

を使用QAbstractProxyModelすることは間違ったアプローチではありません。これを使用して、あらゆる種類のソース モデルをマップしてデータを再構築できます。columnCountdataflags、などのいくつかのメソッドを再実装する必要がindexあります。実際には、このモデルのインデックスがソース モデルの正しいデータにマップされていることを確認する必要があります。また、動的モデルがある場合は、ソース モデルからの信号を処理し、値を変更して再送信する必要があります。ビューでデータも編集したい場合はsetData、 などを再実装する必要があります。

たとえば、2 つの値が追加された列があり、それらを 2 つの別々の列に表示したい場合、columnCount余分な 1 つを返すdata必要があり、元のデータを取得し、インデックス内の列に基づいて 1 つの部分のみを返すindex必要があります。このモデルの新しい境界などを確認するために変更されます。

これに関するより具体的なヘルプが必要な場合は、サンプル コードを投稿してください。

于 2010-09-02T07:06:46.560 に答える