1

当前,如果用户单击仅部分可见的单元格,则窗口会自动滚动以使单元格完全显示。有什么办法可以阻止桌子这样做吗?谢谢

4

2 回答 2

9

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

ui->tableWidget->setAutoScroll(false);

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

于 2013-10-03T13:20:46.277 回答
2

滚动是通过调用带有索引的QAbstractItemView虚函数来完成的。您无法阻止调用,因为它是通过私有计时器完成的,但您可以更改函数的作用:scrollToEnsureVisiblescrollTo

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

为了仍然能够手动滚动到某个项目,您可以编写另一个调用QTableWidget::scrollTo.

于 2011-08-31T14:24:29.933 回答