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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Проблема с перерисовкой масштабированием под виндой.  (Прочитано 3325 раз)
Jkc
Гость
« : Январь 26, 2011, 19:27 »

Были тормоза анимации после масштабирования способами
Код:
this->graphicsViewTop->setMatrix(QMatrix(k,0,0,k,0,0)); или 
graphicsViewTop->fitInView(scene_top->sceneRect(), Qt::IgnoreAspectRatio);

пришлось применить следующий способ для всех элементов.
Код:
void MainWindow::resizeEvent(QResizeEvent* pe)
{
...
QSize resultSize( graphicsViewTop->width() ,  graphicsViewTop->heith() );  // новый размер
...
QPixmap pmScaled = openedPix.scaled(resultSize, Qt::KeepAspectRatio, Qt::FastTransformation ); //
........

Под линуксом вроде всё нормально а вот под виндой, при запуске изображения сжаты не пойми как,
но только я изменяю размер окна все изображения правильно масштабируються  и занимают
правильные позиции. В чём проблема может кто подскажет?
« Последнее редактирование: Январь 26, 2011, 19:35 от Jkc » Записан
igor_bogomolov
Гость
« Ответ #1 : Январь 26, 2011, 23:46 »

Какие у вас версии Qt под Linux и Windows?
Я тоже столкнулся с подобной ошибкой. Проявляется она только на версии Qt 4.7.x, на более ранних нет (от ОС не зависит).  Я пока откатился к более старой версии Qt.
И это не единственный регресс версии 4.7 в Graphics View Framework. Вот например еще одна ошибка http://www.prog.org.ru/topic_16125_0.html

Если можете создайте сообщение об ошибке на bugreports.qt.nokia.com
« Последнее редактирование: Январь 27, 2011, 00:00 от igor_bogomolov » Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #2 : Январь 27, 2011, 10:01 »

Цитировать
Под линуксом вроде всё нормально а вот под виндой, при запуске изображения сжаты не пойми как,
но только я изменяю размер окна все изображения правильно масштабируються  и занимают
правильные позиции. В чём проблема может кто подскажет?
Проблема в том, что изменять размер пиксмапов нужно в перегруженном QGraphicsView::resizeEvent(), т.к. под виндой получается, что MainWindow::resizeEvent() отрабатывает раньше чем изменится размер graphicsViewTop.

Цитата: igor_bogomolov
Я тоже столкнулся с подобной ошибкой
Это не ошибка, т.к. нигде не оговаривается порядок отработки событий.
« Последнее редактирование: Январь 27, 2011, 10:05 от GreatSnake » Записан

Qt 5.11/4.8.7 (X11/Win)
igor_bogomolov
Гость
« Ответ #3 : Январь 27, 2011, 11:16 »

Это не ошибка, т.к. нигде не оговаривается порядок отработки событий.
Согласен с вами. Поторопился я немного с выводами. Упростил свой тестовый пример и понял, что ошибка о которой я говорил другого рода, не имеющая отношения к проблеме ТС.
Записан
Jkc
Гость
« Ответ #4 : Январь 27, 2011, 14:12 »

У меня  QGraphicsView 5 штук, в каждом картинки, фон , анимация,  как можно всё это сделать проще?
 может пример есть у кого?
« Последнее редактирование: Январь 27, 2011, 21:14 от Jkc » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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