QTableView
遅延読み込みを使用してコントロールに取り組んでいます。
QListWidget
表示する必要がある何千ものレコードがあり、単純なアプローチを使用したときにひどく遅れていました。
今、次のdata
メソッドで QAbstractItemModel を使用します。
QVariant MyModel::data(const QModelIndex & index, int role) const
{
int col = index.column();
int row = index.row();
if (role == Qt::DecorationRole && col == 0)
{
return getIcon(row); // icons in the first column
}
else if (role == Qt::DisplayRole && col == 1)
{
return getText(row); // text in the second column
}
else
{
return QVariant();
}
}
結果のテーブル ビューはうまく機能します。高速でスムーズです。
ただし、大きな問題が 1 つあります。それは、選択範囲が完全に壊れていることです。
アイテムを選択しても、すぐに青色で強調表示されません。テーブルをスクロールして、再描画して青色の背景を表示する必要があります。(私は Windows 7 を使用しています。)
また、アイテムを選択するときに点線の長方形が表示されません。
確認しましたが、テーブル ビューの選択モデルが null ではありません。また、Qt の他のモデルの実装もいくつか調べました。それらは同様のデータ メソッドを持っていますが、選択の問題はありません。
QAbstractTableItem
andからのサブクラス化も試みましたがQAbstractListItem
、何もありませんでした。
ここであなたの助けに感謝します。