我正在开发具有延迟加载功能的 QTableView
控件。
我有数千条记录需要显示,当我使用简单的 QListWidget
方法时,它曾经严重滞后。
现在我将 QAbstractItemModel 与以下 data
方法一起使用:
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();
}
}
生成的 TableView 效果很好:它快速而流畅。
但有一个主要问题:选择完全损坏。
当我选择一个或多个项目时,它们不会立即以蓝色突出显示,我需要滚动表格以便它重新绘制并显示蓝色背景。 (我使用的是 Windows 7。)
此外,我在选择项目时没有看到虚线矩形。
查了一下,tableview的选择模型不为null。我还查看了 Qt 中的其他一些模型实现,它们具有相似的数据方法,但它们没有选择问题。
我还尝试从 QAbstractTableItem
和 QAbstractListItem
进行子类化,没有。
在此感谢您的帮助。
最佳答案
抱歉这个愚蠢的问题...
我通过删除以下行解决了这个问题:
tableView->setRootIndex(model->index(0, 0));
关于c++ - 自定义 QAbstractItemModel 和 QTableView 中的错误选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10837094/