Currently, if the user clicks on a cell that is only partially visible, the window automatically scrolls over so that the cell is fully displayed. Is there any way to stop the table doing this? Thanks
The scrolling is done by QAbstractItemView
which call the virtual function scrollTo
with index the hint EnsureVisible
. You can't prevent the call, because it is done through a private timer, but you can change what the scrollTo
function does:
void TableWidget::scrollTo(const QModelIndex &index, ScrollHint hint)
{
if(hint == QAbstractItemView::EnsureVisible)
return;
QTableWidget::scrollTo(index, hint);
}
And to still be able to scroll to an item manually, you could write another member function that would call QTableWidget::scrollTo
.
You can easily disable this behavior with:
ui->tableWidget->setAutoScroll(false);
alexisdm's answer is dealing with another problem. Suppose you are incrementally appending new rows to your table and you want to maintain current vertical scroll position. I am dealing with this second problem and alexisdm's answer seems promising.
来源:https://stackoverflow.com/questions/7195303/how-to-disable-qtablewidget-scrolling-to-selected-cell