crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

Litkevich Yuriy
  опции профиля:
сообщение 2.3.2010, 12:47
Сообщение #1


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Тут наткнулся на косяк в Qt 4.6.0 с устаревшим членом класса.

В 4.6.0, считается устаревшим QGraphicsItem::rotate, вместо него надо использовать QGraphicsItem::setRotation.

Был у меня такой код:
item->rotate(angle);
где угол читался из ini-файла. Затем, в совсем другом месте программы, я добавлял этот элемент на сцену.
Но никак не мог понять почему item->rotation() всегда возвращал нуль, хотя наверняка угол был отличен от нуля. НО! на сцене элемент устанавливался правильно (с учётом угла).
Для отладки даже сделал так:
qDebug() << "before. angle =" << angle << "rotation()" << item->rotation();
item->rotate(angle);
qDebug() << "after. angle =" << angle << "rotation()" << item->rotation();
и всегда при не нулевом угле, получал rotation = 0

Всю голову себе сломал.
Потом попробовал рекомендуемый код, через setRotation:
qDebug() << "before. angle =" << angle << "rotation()" << item->rotation();
item->setRotation(angle);
qDebug() << "after. angle =" << angle << "rotation()" << item->rotation();
И всё стало соответствовать действительности, т.е. при не нулевом угле и rotation != 0

Так что имейте в виду!

П.С. Потрачено 2,5 часа (коту под яйца)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 7.6.2025, 9:45