How to disable QTableWidget scrolling to selected cell?
Currently, if the user clicks on a cell that is only partially visible开发者_StackOverflow社区, the window automatically scrolls over so that the cell is fully displayed. Is there any way to stop the table doing this? Thanks
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.
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
.
精彩评论