#include <QApplication>
#include <QPushButton>
#include <QPropertyAnimation>
typedef qreal (*MyEasingFunction)(qreal progress);
qreal myEasingFunctionImpl(qreal t){
return -(::sqrt(1 - t*t) - 1);
}
int main(int argc, char* argv[ ])
{
QApplication app(argc, argv);
QPushButton button("Animated Button");
button.show();
QPropertyAnimation animation(&button, "geometry");
animation.setDuration(2000);
animation.setStartValue(QRect(250, 0, 120, 30));
animation.setEndValue(QRect(250, 300, 120, 30));
//animation.setEasingCurve(QEasingCurve::InCirc);
QEasingCurve c;
MyEasingFunction f = &myEasingFunctionImpl;
c.setCustomType(f);
animation.setEasingCurve(c);
animation.start();
return app.exec();
}
//C:\Qt\Qt5.14.1\5.14.1\Src\qtbase\src\3rdparty\easing\easing.cpp