如何禁用QTableWidget滚动到选定单元格?

3

目前,如果用户点击一个部分可见的单元格,窗口会自动滚动,以使单元格完全显示。有没有办法阻止表格这样做?谢谢。

2个回答

12

你可以轻松地使用以下方法禁用此行为:

ui->tableWidget->setAutoScroll(false);

alexisdm的回答是针对另一个问题的。假设你正在逐步向表格中添加新行,并且希望保持当前的垂直滚动位置。我正在解决这个第二个问题,而alexisdm的答案似乎很有希望。


这也适用于 QTableView 表格。覆盖 TableWidget::scrollTo() 显然只是一个不必要的额外步骤。 - CodeLurker

3
滚动由QAbstractItemView执行,它调用了带有索引提示EnsureVisible的虚函数scrollTo。您无法阻止该调用,因为它是通过私有计时器完成的,但可以更改scrollTo函数的操作行为。
void TableWidget::scrollTo(const QModelIndex &index, ScrollHint hint)
{
    if(hint == QAbstractItemView::EnsureVisible)
        return;
    QTableWidget::scrollTo(index, hint);
}

如果您仍然想手动滚动到某个项目,您可以编写另一个成员函数,该函数将调用QTableWidget::scrollTo


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接