开发者

How to disable QTableWidget scrolling to selected cell?

开发者 https://www.devze.com 2023-03-30 15:14 出处:网络
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

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.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号