Название: QPlainTextEdit, организовать скролинг Отправлено: Exception13 от Октябрь 02, 2009, 09:46 Долго ковырялся, но пока так вразумительного ничего не получилось.
Общий смысл задачи: просмотр гигантских документов (в пределе до 2^63 байт) в текстовом/шестнадцетиричном виде, не требовательный к памяти. Пытаюсь переделать компонент QPlainTextEdit под данные условия следующим образом: Накладываю ограничение на количество строк, хранящихся в компоненте при помощи QPlainTextEdit::setMaximumBlockCount(). Соответственно, количество строк рассчитывается исходя из размеров окна и используемого шрифта. Таким образом, при добавлении новой строки в компонент и переполнении значения QPlainTextEdit::maximumBlockCount, содержимое компонента будет скролиться вверх. Очень даже замечательное средство для построчной прокрутки...Но хотелось бы, чтобы у компонента была возможность не только скролинга вверх, но и вниз. Т.е.: - курсор находится в позиции QTextCursor::End, делаем QPlainTextEdit::insertPlainText() и содержимое автоматически скролиться вверх. (такая штука уже заложена в QPlainTextEdit) - курсор находится в позиции QTextCursor::Start, делаем QPlainTextEdit::insertPlainText() и содержимое автоматически скролиться вниз и в самый верх добавляется новая строка. А вот последнее хотелось бы реализовать, но пока не знаю как ? Потому как, при полностью заполненном документе QPlainTextEdit'a последовательность команд: Код
приводит к тому, что курсор перемещается в начало документа, добавляется новая строка, но, поскольку документ уже переполнен, то только что помещенная в него строка - удаляется, а хотелось бы, чтобы выталкивалась нижняя в данном случае. Может кто, что посоветует ? Название: Re: QPlainTextEdit, организовать скролинг Отправлено: SimpleSunny от Октябрь 02, 2009, 15:58 1. Перед вставкой текста удалять необходимое количество блоков снизу, и оформить все в виде наследника QPlainTextEdit.
2. Подправить QTextDocumentPrivate на данный предмет и перекомпилировать Qt. Но будет непереносимое решение. 3. Написать троллям, пусть сами добавят подобный функционал. 4. Создать патч самому и отправить тролям :) |