Название: QPropertyAnimation не работает "rotation" Отправлено: kvrus от Май 07, 2011, 18:44 Не крутится куллер не работает "rotation", почему то пишет
QPropertyAnimation: you're trying to animate a non-existing property rotation of your QObject А кнопочка нормально выпадает. Почему так? #include "widget.h" Widget::Widget(QWidget *parent) : QWidget(parent){ lbl = new QLabel(this); lbl->setGeometry(5,5,373,373); lbl->setPixmap(QPixmap(":/cooller.png")); btn = new QPushButton("ROTATE",this); btn->setGeometry(180,-40,100,40); m_ani = new QPropertyAnimation(btn,"pos",this); m_ani2 = new QPropertyAnimation(lbl,"rotation",this); connect(btn,SIGNAL(clicked()),this,SLOT(chengeAngle())); this->setFixedSize(400,400); } Widget::~Widget() { } void Widget::mousePressEvent(QMouseEvent *e){ m_ani->setDuration(500); if (btn->y()==-40){ m_ani->setEndValue(QPoint(180,50)); m_ani->setEasingCurve(QEasingCurve::InBack); } else { m_ani->setEndValue(QPoint(180,-40)); m_ani->setEasingCurve(QEasingCurve::InBack); } m_ani->start(); } void Widget::chengeAngle(){ m_ani2->setStartValue(qreal(0)); m_ani2->setEndValue(qreal(-360)); //m_ani2->setEasingCurve(QEasingCurve::InBack); m_ani2->start(); } Название: Re: QPropertyAnimation не работает "rotation" Отправлено: kvrus от Май 08, 2011, 07:47 Короче вообще не понимаю почему не работает эта штука.
байтаррай должен содержать имя свойства объекта которое мы хотим проанимировать, В коде который я приел я пытался изменить лейблу свойство rotation, и у лейбла действительно нет такого свойства , поэтому и не работает. Но вот сейчас попробовал сделать вращение для QGraphicsObject и у него есть свойство "rotate": p1->rotate(qreal(30)); напямую оно работает - поворачивает!!! а через анимацию не поворачивает: m_anim1 = new Animation(p1,"rotate"); p1->rotate(qreal(30)); m_anim1->setStartValue(qreal(-180)); m_anim1->setEndValue(qreal(-10)); m_anim1->setDuration(500); connect(m_anim1,SIGNAL(finished()),m_anim1,SLOT(start())); m_anim1->start(); и пишет тоже : QPropertyAnimation: you're trying to animate a non-existing property rotate of your QObject Название: Re: QPropertyAnimation не работает "rotation" Отправлено: kvrus от Май 08, 2011, 08:17 Все господа разобрался:
есть класс элемента отображения который мы хотим вращать (при конструировании подкладываем ему картинку, полупрозрачный PNG): //--------------------------------------------------------------------------------------------------------------- // Класс анимированной пиксмапки // QPixmap - подсовываем в конструкторе //--------------------------------------------------------------------------------------------------------------- class PixmapItem : public QObject, public QGraphicsPixmapItem{ Q_OBJECT Q_PROPERTY(QPointF pos READ pos WRITE setPos) Q_PROPERTY(qreal rotation READ rotation WRITE setRotation) public: PixmapItem(const QPixmap &pix) : QGraphicsPixmapItem(pix){ } }; В этом классе необходимо задать свойства Q_PROPERTY(qreal rotation READ rotation WRITE setRotation) по книжке это примерно так: Q_PROPERTY(type name READ getFunction [WRITE setFunction] [RESET resetFunction] [DESIGNABLE bool] [SCRIPTABLE bool] [STORED bool]) Этот макрос используется для создания и управления свойствами. Мета компилятор контролирует тип значения, возвращаемого get- функции который должен совпадать с типом свойства, быть указателем на него или статической ссылкой. После такого макроса, класс можно вращать: m_anim1 = new QPropertyAnimation(p1,"rotation"); m_anim1->setStartValue(qreal(-0)); m_anim1->setEndValue(qreal(-360)); m_anim1->setDuration(500); connect(m_anim1,SIGNAL(finished()),m_anim1,SLOT(start())); m_anim1->start(); Вот только надо еще центр вращения задать. "И все таки она вертится" :) Название: Re: QPropertyAnimation не работает "rotation" Отправлено: lesav от Май 13, 2011, 13:49 connect(m_anim1,SIGNAL(finished()),m_anim1,SLOT(start())); m_anim1->setLoopCount(-1); // forever Название: Re: QPropertyAnimation не работает "rotation" Отправлено: lesav от Май 16, 2011, 08:36 Вот только надо еще центр вращения задать. С центром вращения никаких проблем: Код
А можно ли вывести анимированный объект PixmapItem вне сцены ? Название: Re: QPropertyAnimation не работает "rotation" Отправлено: GreatSnake от Май 16, 2011, 09:39 Цитировать А можно ли вывести анимированный объект PixmapItem вне сцены ? Это как это ???Название: Re: QPropertyAnimation не работает "rotation" Отправлено: lesav от Май 16, 2011, 10:41 Или чтобы не видно было сцены за анимированным объектом.
В аттаче пояснение проблемы. Картинки: слева текущее состояние. справа что требуется. Расписывать решение не требуется, нужен ответ в двух-пяти словах. |