自定义QAbstractItemModel和QTableView中的选择中断

时间:2012-05-31 15:56:22

标签: c++ qt model model-view

我正在使用延迟加载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();
    }
}

生成的表格视图效果很好:它快速而流畅。

但是有一个主要问题:选择完全被打破。

当我选择一个项目/项目时,它们不会立即以蓝色突出显示,我需要滚动表格以便重新绘制并显示蓝色背景。 (我使用的是Windows 7。)

在选择项目时,我也看不到虚线矩形。

我查了一下,表视图的选择模型不是null。另外我查看了Qt中的其他一些模型实现,它们有类似的数据方法,但它们没有选择问题。

我还尝试了从QAbstractTableItemQAbstractListItem进行子类化,没有。

在此感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

对这个愚蠢的问题感到抱歉......

我通过删除以下行解决了这个问题:

tableView->setRootIndex(model->index(0, 0));