Russian Qt Forum
Сентябрь 30, 2024, 22:32 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Resize event  (Прочитано 8811 раз)
EhTemka
Гость
« : Ноябрь 18, 2008, 12:05 »


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

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

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

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

Записан
Hort
Гость
« Ответ #1 : Ноябрь 18, 2008, 12:38 »

сколько не мучился так толком ничего и не придумал. а чем перерисовка при каждой итерации не подходит? тормозит сильно? если нет то и не заморачивайся - все виджета так в Qt и отрисовываются.
Записан
EhTemka
Гость
« Ответ #2 : Ноябрь 18, 2008, 13:00 »

Тормозит ужасно  Улыбающийся

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

Вообщем таймер меня пока устраивает.
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #3 : Ноябрь 18, 2008, 16:00 »

по поводу края окна - боюсь что никак
Записан
Hort
Гость
« Ответ #4 : Ноябрь 18, 2008, 20:44 »

ха! я тоже пытался бороться с тормозами QTreeView =) вроде как в 4.5 должна появится возможность изменения размеров без перерисовки. заметил эту фичу в QtCreator (который собственно на 4.5 и написан) - если открыть в нем Help и двигать сплитер, разделяющий дерево помощи и виджет просмотра, то виджеты не перерисовываются, а место перемещение отмечается полупрозрачной полоской.
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #5 : Ноябрь 19, 2008, 11:20 »

ха! я тоже пытался бороться с тормозами QTreeView =) вроде как в 4.5 должна появится возможность изменения размеров без перерисовки. заметил эту фичу в QtCreator (который собственно на 4.5 и написан) - если открыть в нем Help и двигать сплитер, разделяющий дерево помощи и виджет просмотра, то виджеты не перерисовываются, а место перемещение отмечается полупрозрачной полоской.

Ты имеешь ввиду http://doc.trolltech.com/4.4/qsplitter.html#opaqueResize-prop? Так это испокон веку было.
Записан
Hort
Гость
« Ответ #6 : Ноябрь 19, 2008, 12:40 »

Ты имеешь ввиду http://doc.trolltech.com/4.4/qsplitter.html#opaqueResize-prop? Так это испокон веку было.
действительно это оно. жаль что подобного своства для виджетов.
может кто знает как выделить сплитер на краю между QDockWidget и центральным виджетом?
« Последнее редактирование: Ноябрь 19, 2008, 12:45 от Hort » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.045 секунд. Запросов: 22.