Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: EhTemka от Ноябрь 18, 2008, 12:05



Название: Resize event
Отправлено: EhTemka от Ноябрь 18, 2008, 12:05

Добрый день.
Вот появилась задачка, отрисовывать большую картинку в неком виджете. При ресайзе виджета нужно делать перересовку этой картинки. Ресайз может происходить двумя способами:

1. Изменение размеров окна.
2. Изменение положения сплиттера.

Сейчас я произвожу перересовку в void QWidget::resizeEvent ( QResizeEvent * event ), но это как то очень накладно, на каждую итерацию ресайза... Хотелось бы перерисовывать только в момент окончания изменения размеров (то есть когда юзер отпустит край окна или сплиттер).

Есть мысль перересовки по таймеру, но может есть способ получше?



Название: Re: Resize event
Отправлено: Hort от Ноябрь 18, 2008, 12:38
сколько не мучился так толком ничего и не придумал. а чем перерисовка при каждой итерации не подходит? тормозит сильно? если нет то и не заморачивайся - все виджета так в Qt и отрисовываются.


Название: Re: Resize event
Отправлено: EhTemka от Ноябрь 18, 2008, 13:00
Тормозит ужасно  :)

Сделал по таймеру, стало лучше. В resizeEvent стартуем таймер, в слоте проверяем присходят ли изменения, если уже нет, то перересовываем. Просто картинка не просто картинка, а отрендеренный хтмл-текст. И он может быть очен больших размеров. А рисовать его нужно в QTreeView. Вот и заморачиваюсь.

Вообщем таймер меня пока устраивает.


Название: Re: Resize event
Отправлено: Alex Custov от Ноябрь 18, 2008, 16:00
по поводу края окна - боюсь что никак


Название: Re: Resize event
Отправлено: Hort от Ноябрь 18, 2008, 20:44
ха! я тоже пытался бороться с тормозами QTreeView =) вроде как в 4.5 должна появится возможность изменения размеров без перерисовки. заметил эту фичу в QtCreator (который собственно на 4.5 и написан) - если открыть в нем Help и двигать сплитер, разделяющий дерево помощи и виджет просмотра, то виджеты не перерисовываются, а место перемещение отмечается полупрозрачной полоской.


Название: Re: Resize event
Отправлено: Alex Custov от Ноябрь 19, 2008, 11:20
ха! я тоже пытался бороться с тормозами QTreeView =) вроде как в 4.5 должна появится возможность изменения размеров без перерисовки. заметил эту фичу в QtCreator (который собственно на 4.5 и написан) - если открыть в нем Help и двигать сплитер, разделяющий дерево помощи и виджет просмотра, то виджеты не перерисовываются, а место перемещение отмечается полупрозрачной полоской.

Ты имеешь ввиду http://doc.trolltech.com/4.4/qsplitter.html#opaqueResize-prop (http://doc.trolltech.com/4.4/qsplitter.html#opaqueResize-prop)? Так это испокон веку было.


Название: Re: Resize event
Отправлено: Hort от Ноябрь 19, 2008, 12:40
Ты имеешь ввиду http://doc.trolltech.com/4.4/qsplitter.html#opaqueResize-prop (http://doc.trolltech.com/4.4/qsplitter.html#opaqueResize-prop)? Так это испокон веку было.
действительно это оно. жаль что подобного своства для виджетов.
может кто знает как выделить сплитер на краю между QDockWidget и центральным виджетом?