Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: cupuyc. от Декабря 02, 2014, 15:24



Название: Отключение\включение автоскроллинга QTextEdit
Отправлено: cupuyc. от Декабря 02, 2014, 15:24
Доброго времени суток.
Нужно сделать отключение и включение автопрокрутки на QTextEdit по нажатию на чекбокс.
Собственно вопрос: как отключить, а потом включить автопрокрутку текста в QTextEdit.


Название: Re: Отключение\включение автоскроллинга QTextEdit
Отправлено: ammaximus от Декабря 03, 2014, 08:48
Я ловил изменение и вызывал QAbstractScrollArea::scrolltobottom. Check box изменял мою переменную, которую я проверял перед вызовом.


Название: Re: Отключение\включение автоскроллинга QTextEdit
Отправлено: cupuyc. от Декабря 03, 2014, 09:42
Я ловил изменение и вызывал QAbstractScrollArea::scrolltobottom. Check box изменял мою переменную, которую я проверял перед вызовом.

А можно поподробнее? Как включить прокрутку в конец я нашел. Когда установлен чек бокс, я выполняю этот код ,после вставки новой строки:

QScrollBar* sb = textEdit->verticalScrollBar();
sb->setValue(sb->maximum());

...но вот как ее отключить, причем с возможностью прокрутки колесиком мыши и таскания за слайдер. По умолчанию, когда в QTextEdit заносятся строки, слайдер прокручивает окно на последнюю занесенную строку и отключить это можно только если кликнуть на окне QTextEdit.


Название: Re: Отключение\включение автоскроллинга QTextEdit
Отправлено: ammaximus от Декабря 03, 2014, 11:08
А, ну если уже взял QScrollBar то можно сделать и через него:
1. Перед вставкой текста получай value.
2. Если value==bottom ставишь флаг ничего не делать, если value где-то еще - сохраняешь value.
3. Добавляешь текст. Если сохранял value - возвращаешь его.

Получается эффект "прилипания" скроллбара, очень популярное решение и чекбокс не нужен.


Название: Re: Отключение\включение автоскроллинга QTextEdit
Отправлено: cupuyc. от Декабря 03, 2014, 13:23
А, ну если уже взял QScrollBar то можно сделать и через него:
1. Перед вставкой текста получай value.
2. Если value==bottom ставишь флаг ничего не делать, если value где-то еще - сохраняешь value.
3. Добавляешь текст. Если сохранял value - возвращаешь его.

Получается эффект "прилипания" скроллбара, очень популярное решение и чекбокс не нужен.

спасибо, остановился на этом варианте.