Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: troorl от Август 15, 2006, 09:55



Название: Плавный скроллинг в QT
Отправлено: troorl от Август 15, 2006, 09:55
Задался целью написать программу, о которой уже давно втихаря мечтал (Just for fun) - читалу электронных книг.
Одним из требований является плавный скролл текста (возможно автопрокрутка, плавное листание). Также хочеться реализовать постраничное листание не зависимо от размера окна (т.е. пользователь нажимает на пробел - и страничка сама плавно прокручивается вверх ровно настолько, чтобы последняя видимая строка стала первой невидимой).
Что-то похожее есть в ICE Book Reader. Но там алгоритм этой прокрутки меня немного пугает. Автор этой программы при прокрутке манипулирует не текстом, а изображением этого текста (предварительнно сохраняя его в буфер). Это даёт возможность сделать кэш, что при быстром листании очень даже выручает.
В Linux видел такую фичу на примере Kpdf - читалка pdf-файлов для KDE. Даже когда у меня стояли медленные дрова на видео эта программа максимально плавно прокручивала страницы (хотя сдаётся мне, что без перегонки изображения в буфер там тоже не обошлось).

Так вот собственно хотел поинтересоваться. Может у кого-то есть какие-то мысли есть по поводу того, как вышеописанные вещи можно реализовать на чистом QT? Желательно сам принцип.


Название: Плавный скроллинг в QT
Отправлено: Hordi от Август 15, 2006, 10:04
если о qt3 говорить, то юзаешь QCanvas - плавное передвижение достаточно большого текста очень даже реальная штука.


Название: Плавный скроллинг в QT
Отправлено: troorl от Август 15, 2006, 10:37
Цитата: "Hordi"
если о qt3 говорить, то юзаешь QCanvas - плавное передвижение достаточно большого текста очень даже реальная штука.
А стоят ли затраты на расчёты размеров текста и буфера и прочего гемороя конечного результата? Я имею в виду, намного ли это сложнее, чем просто воспользоваться QTextBrowser? При условии, что размер шрифта можно будет менять на лету, да и сам шрифт будет неоднородным. Здесь всё упирается в количество символов, которые нужно передать на канву, чтобы полностью её заполнить.


Название: Плавный скроллинг в QT
Отправлено: QCasper от Август 15, 2006, 21:09
firefox довольно плавно скролит при нажатии на среднюю кнопку мыши.


Название: Плавный скроллинг в QT
Отправлено: Hordi от Август 15, 2006, 21:56
2 troorl:
Стоит, тем более не намного все сложнее.


Название: Плавный скроллинг в QT
Отправлено: Вудруф от Август 16, 2006, 05:39
QCasper: отнюдь. У BookReader'а более плавная прокрутка. А Firefox мерцает :(


Название: Плавный скроллинг в QT
Отправлено: QCasper от Август 16, 2006, 10:21
Цитата: "Вудруф"
QCasper: отнюдь. У BookReader'а более плавная прокрутка. А Firefox мерцает :(


да.. сейчас вот на другой машине действительно заметил мерцание, дома не мерцало :)