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

如何禁用QTableWidget滚动到选定单元格?,qt,qtablewidget,Qt,Qtablewidget,当前,如果用户单击仅部分可见的单元格,窗口将自动滚动,以便完全显示该单元格。有没有办法阻止桌子这样做?感谢滚动由qabstractemview完成,它调用虚拟函数scrollTo,索引提示ensurerevible。您无法阻止调用,因为它是通过专用计时器完成的,但您可以更改scrollTo函数的功能: void TableWidget::scrollTo(const QModelIndex &index, ScrollHint hint) { if(hint == QAbstra

当前,如果用户单击仅部分可见的单元格,窗口将自动滚动,以便完全显示该单元格。有没有办法阻止桌子这样做?感谢滚动由
qabstractemview
完成,它调用虚拟函数
scrollTo
,索引提示
ensurerevible
。您无法阻止调用,因为它是通过专用计时器完成的,但您可以更改
scrollTo
函数的功能:

void TableWidget::scrollTo(const QModelIndex &index, ScrollHint hint)
{
    if(hint == QAbstractItemView::EnsureVisible)
        return;
    QTableWidget::scrollTo(index, hint);
}

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

滚动由
qabstractemview
完成,它调用虚拟函数
scrollTo
,并使用索引提示
ensurerevible
。您无法阻止调用,因为它是通过专用计时器完成的,但您可以更改
scrollTo
函数的功能:

void TableWidget::scrollTo(const QModelIndex &index, ScrollHint hint)
{
    if(hint == QAbstractItemView::EnsureVisible)
        return;
    QTableWidget::scrollTo(index, hint);
}

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

,您可以通过以下方法轻松禁用此行为:

ui->tableWidget->setAutoScroll(false);

他的答案是处理另一个问题。假设您正在以增量方式向表中追加新行,并且希望保持当前的垂直滚动位置。我正在处理第二个问题,而他的答案似乎很有希望。

您可以通过以下方法轻松禁用此行为:

ui->tableWidget->setAutoScroll(false);
他的回答是处理另一个问题。假设您正在以增量方式向表中追加新行,并且希望保持当前的垂直滚动位置。我正在处理第二个问题,他的答案似乎很有希望