1

ここのチュートリアルに従って、QtQuick2 を使用して TableView に SQLITE テーブルを表示しようとしています。そのチュートリアルでは、generateRoleNames() メソッドが最後に setRoleNames() を呼び出します。ただし、その方法は推奨されていません。

メソッド doSetRoleNames() がありますが、これは非公開であり、派生した QLSqlTableModel クラスでは使用できません。ソースコードはこちら.

編集:私の roleNames() 実装の本体:

QHash<int, QByteArray> QLSqlTableModel::roleNames() {
  return roles;
}
4

1 に答える 1

2

メソッドQAbstractItemModel::roleNames()は仮想であるため、独自のロール名を定義するには、サブクラスで再実装し、目的のハッシュを返します。つまり、QSqlTableModel をサブクラス化する必要があります。

(ロール名の主な目的は、QtQuick でモデルからロールを受け取ることです。)

役割は「列の名前識別子」ではなく、役割と列は直交しています:

インデックスごとに、テキスト、アイコン、色など、またはカスタムのユーザー定義データを取得できます。たとえば、単一列モデルを使用して、任意の数のカスタム ロールを持つことができます。ただし、SQL テーブル モデルは、ロールが通常列に一致する特定のケースです。QtQuick ビューは通常、単一の列を表示しますが、多くのロールを簡単に処理できるため、テーブル列のデータに対応するロールを定義して、関連するすべての列に簡単にアクセスできます。ロール経由のデータ。

于 2013-11-01T21:21:36.483 に答える