Russian Qt Forum
Март 29, 2024, 13:08
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Пользовательский интерфейс (GUI)
>
Property animation или универсальная анимация
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Property animation или универсальная анимация (Прочитано 3207 раз)
strilya
Гость
Property animation или универсальная анимация
«
:
Июль 26, 2015, 01:08 »
Доброго времени суток.
Есть куча объектов в разных классах, которые было бы неплохо анимировать при разных внешних причинах.
Перспектива писать тысячи одинаковых строчек обрадовала не сильно, поэтому было решено сделать парочку ф-ций, реализующие данный ф-ционал:
Код:
enum Typeanim{chsize, chpos};
// Перегруженная функция анимации объекта obj, изменение координат ИЛИ размера
void Animation::animateObject(QWidget *obj, Typeanim typeanim, unsigned duration, QEasingCurve easingcurve,
int startX, int startY, int endX, int endY)
{
QPropertyAnimation *anim = new QPropertyAnimation(obj, "geometry");
anim->setDuration(duration);
anim->setEasingCurve(easingcurve);
if(typeanim == chsize){
QPoint pos = obj->pos();
anim->setStartValue(QRect(pos.x(), pos.y(), startX, startY));
anim->setEndValue(QRect(pos.x(), pos.y(), endX, endY));
} else {
QSize sizeobj = obj->size();
anim->setStartValue(QRect(startX, startY, sizeobj.width(), sizeobj.height()));
anim->setEndValue(QRect(endX, endY, sizeobj.width(), sizeobj.height()));
}
anim->start(QAbstractAnimation::DeleteWhenStopped);
return;
}
Имею следующие ошибки:
Код:
no matching function for call to 'QPropertyAnimation::QPropertyAnimation(QWidget*&, const char [9])'
QPropertyAnimation *anim = new QPropertyAnimation(obj, "geometry");
variable 'QSize sizeobj' has initializer but incomplete type
QSize sizeobj = obj->size();
invalid use of incomplete type 'class QWidget'
QSize sizeobj = obj->size();
invalid use of incomplete type 'class QRect'
anim->setStartValue(QRect(startXpos, startYpos, sizeobj.width(), sizeobj.height()));
Прошу помощи, ибо ошибки кажутся простейшими, но тем не менее, я не очень могу понять, в чем я не прав.
Записан
BuRn
Гость
Re: Property animation или универсальная анимация
«
Ответ #1 :
Июль 26, 2015, 02:58 »
Qt 5.5 Взял ваш пример, у меня нет ошибок компиляции. Приведите полностью код класса Animation. Надеюсь вы подключили
Код:
#include <QPropertyAnimation>
Записан
strilya
Гость
Re: Property animation или универсальная анимация
«
Ответ #2 :
Июль 26, 2015, 03:27 »
Qt 5.5, mingw
Animatioh.h
Код:
#ifndef ANIMATION_H
#define ANIMATION_H
#include <QObject>
#include <QPropertyAnimation>
enum Typeanim{chsize, chpos};
class Animation : public QObject
{
Q_OBJECT
public:
explicit Animation(QObject *parent = 0);
protected:
// Перегруженная функция анимации объекта obj, изменение координат
void animateObject(QWidget *obj, unsigned duration, QEasingCurve typeanim,
int startXpos, int startYpos, int endXpos, int endYpos);
// Перегруженная функция анимации объекта obj, изменение координат и размера
void animateObject(QWidget *obj, unsigned duration, QEasingCurve typeanim,
int startXpos, int startYpos, int endXpos, int endYpos, int startXsize, int startYsize,
int endXsize, int endYsize);
};
#endif // ANIMATION_H
Animation.cpp
Код:
#include "animation.h"
// Конструктор
Animation::Animation(QObject *parent) : QObject(parent){
}
// Перегруженная функция анимации объекта obj, изменение координат ИЛИ размера
void Animation::animateObject(QWidget *obj, Typeanim typeanim, unsigned duration, QEasingCurve easingcurve,
int startX, int startY, int endX, int endY)
{
QPropertyAnimation *anim = new QPropertyAnimation(obj, "geometry");
anim->setDuration(duration);
anim->setEasingCurve(easingcurve);
if(typeanim == chsize){
QPoint pos = obj->pos();
anim->setStartValue(QRect(pos.x(), pos.y(), startX, startY));
anim->setEndValue(QRect(pos.x(), pos.y(), endX, endY));
} else {
QSize sizeobj = obj->size();
anim->setStartValue(QRect(startX, startY, sizeobj.width(), sizeobj.height()));
anim->setEndValue(QRect(endX, endY, sizeobj.width(), sizeobj.height()));
}
anim->start(QAbstractAnimation::DeleteWhenStopped);
return;
}
// Перегруженная функция анимации объекта obj, изменение координат И размера
void Animation::animateObject(QWidget *obj, unsigned duration, QEasingCurve easingcurve, int startXpos,
int startYpos, int endXpos, int endYpos, int startXsize, int startYsize, int endXsize, int endYsize)
{
QPropertyAnimation *anim = new QPropertyAnimation(obj, "geometry");
anim->setDuration(duration);
anim->setEasingCurve(easingcurve);
anim->setStartValue(QRect(startXpos, startYpos, startXsize, startYsize));
anim->setEndValue(QRect(endXpos, endYpos, endXsize, endYsize));
anim->start(QAbstractAnimation::DeleteWhenStopped);
return;
}
«
Последнее редактирование: Июль 26, 2015, 03:29 от strilya
»
Записан
BuRn
Гость
Re: Property animation или универсальная анимация
«
Ответ #3 :
Июль 26, 2015, 13:52 »
Смотрите внимательнее:
Прототип в h файле
Код:
void animateObject(QWidget *obj, unsigned duration, QEasingCurve typeanim,
int startXpos, int startYpos, int endXpos, int endYpos);
Реализация
Код:
Animation::animateObject(QWidget *obj, Typeanim typeanim, unsigned duration, QEasingCurve easingcurve,
int startX, int startY, int endX, int endY)
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...