Как отключить прокрутку QTableWidget на выбранную ячейку? - PullRequest
1 голос
/ 25 августа 2011

В настоящее время, если пользователь нажимает на ячейку, которая видна только частично, окно автоматически прокручивается так, что ячейка отображается полностью. Есть ли способ остановить стол, делающий это? Спасибо

Ответы [ 2 ]

6 голосов
/ 03 октября 2013

Вы можете легко отключить это поведение с помощью:

ui->tableWidget->setAutoScroll(false);

alexisdm ответ имеет дело с другой проблемой.Предположим, что вы постепенно добавляете новые строки в таблицу и хотите сохранить текущую позицию вертикальной прокрутки.Я имею дело с этой второй проблемой, и ответ alexisdm кажется многообещающим.

1 голос
/ 31 августа 2011

Прокрутка выполняется с помощью QAbstractItemView, которая вызывает виртуальную функцию scrollTo с индексом подсказки EnsureVisible. Вы не можете предотвратить вызов, потому что это делается через таймер, но вы можете изменить то, что делает функция scrollTo:

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

И чтобы по-прежнему иметь возможность прокручивать элемент вручную, вы можете написать другую функцию-член, которая будет вызывать QTableWidget::scrollTo.

...