の基になるデータ ソースの実装について一般的な質問がありQAbstractTableModel
ます。
このQAbstractTableModel::data()
関数は、行と列の値で構成されるインデックスによってデータ ソースのコンテンツにアクセスします。
基になるデータ ソースがQList
クラスPerson
であり、各メンバーが列を表す場合、特定の列インデックスを使用してそのメンバーにアクセスするにはどうすればよいですか?
Person
私が考えることができる唯一のアプローチは、列番号をクラスのメンバーにマップする一種のマッピングを使用することです。
QVariant TableModel::data(const QModelIndex &index, int role) const
{
if (role == Qt::DisplayRole)
{
Person person = mySource[index.row()];
if (index.column() == 0)
return person.getName();
else if (index.column() == 1)
return person.getAdress();
(...and so on..)
}
return QVariant();
}
これはこの問題に取り組むためのアプローチですか、それともより良いものがありますか? 私のクラスに 50 人のメンバーがいる場合、それは大変な作業になります。経由でソースにデータを書き込むときも、同じことを行う必要がありますQAbstractTableModel::setData()
。
Qtでのモデル/ビュー実装のこの部分を理解するのに役立つ資料への回答またはリンクは非常に高く評価されています.