4

QAbstractTableModel をサブクラス化する場合、特定の行と列の QModelIndex を取得する適切な方法は何ですか (たとえば、便利なメソッド data(int row, int column) を提供するため)?

index() と createIndex() があります - どちらもそうしているようですか?

例:

TableModel::data(int row, int column, int role) const
{
    return data(index(row, column), role);
}
4

2 に答える 2

5

必要なのは index() です。createIndex() は、サブクラスがインデックスを生成するために使用するものです。ただし、QModelIndex には data() メンバーがあります。したがって、 model->index(row, column).data(role) が必要な場合があります。ヘルパー関数は必要ありません。

于 2012-11-18T03:34:52.383 に答える
2

ここではindex()が慣用的な方法であると言えます。そうすれば、コードは正しくなります。

一般に、createIndex()は、index()メソッドとparent()メソッドをオーバーライドする必要がある場合に、QAbstractItemModelのサブクラスで使用されます。QModelIndexコンストラクターはプライベートであるため、createIndex()を使用して新しいインデックスを作成する必要があります。

さらに、QModelIndexはいくつかの内部データ(QModelIndex :: internalPointer)を格納できます。createIndex()は、作成されたQModelIndexへの内部ポインターを渡すためにも使用されます。

于 2012-11-18T03:47:18.320 に答える