我正在研究一个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();
}
}
生成的表格视图效果很好:它快速而流畅。
但是有一个主要问题:选择完全被破坏了。
当我选择一个项目/项目时,它们不会立即以蓝色突出显示,我需要滚动表格以便它重新绘制并显示蓝色背景。(我使用的是 Windows 7。)
选择项目时我也看不到虚线矩形。
我查了一下,表格视图的选择模型不为空。我还查看了 Qt 中的其他一些模型实现,它们具有类似的数据方法,但它们没有选择问题。
我也尝试从QAbstractTableItem
and子类化QAbstractListItem
,什么都没有。
在这里感谢您的帮助。