diff options
Diffstat (limited to 'examples/animation/research/memberfunctions/main.cpp')
-rw-r--r-- | examples/animation/research/memberfunctions/main.cpp | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/examples/animation/research/memberfunctions/main.cpp b/examples/animation/research/memberfunctions/main.cpp new file mode 100644 index 0000000..9142f29 --- /dev/null +++ b/examples/animation/research/memberfunctions/main.cpp @@ -0,0 +1,48 @@ +#include <QtGui> +#include "qvalueanimation.h" + +AbstractProperty *qGraphicsItemProperty(QGraphicsItem *item, const char *property) +{ + if (qstrcmp(property, "pos") == 0) { + return new MemberFunctionProperty<QGraphicsItem, QPointF>(item, &QGraphicsItem::pos, &QGraphicsItem::setPos); + } + return 0; +} + +int main(int argc, char **argv) +{ + QApplication app(argc, argv); + + QGraphicsScene scene; + QGraphicsView view(&scene); + + QGraphicsItem *item = new QGraphicsRectItem(QRectF(0,0, 200, 100)); + scene.addItem(item); + + QValueAnimation *posAnim = new QValueAnimation; + posAnim->setStartValue(QPointF(0,0)); + posAnim->setEndValue(QPointF(400, 0)); + posAnim->setDuration(1000); + // Alternative 1 + //posAnim->setMemberFunction(item, &QGraphicsItem::pos, &QGraphicsItem::setPos); + + // Alternative 2 + //posAnim->setProperty(qMemberFunctionProperty(item, &QGraphicsItem::pos, &QGraphicsItem::setPos)); + + // Alternative 3 + posAnim->setProperty(qGraphicsItemProperty(item, "pos")); + + // Alternative 4, (by implementing the qGraphicsItemProperty QGraphicsItem::property()) + //posAnim->setProperty(item->property("pos")); + + // can also do this, which abstracts away the whole property thing. + // i.e. this interface can also be used for QObject-properties: + //posAnim->setAnimationProperty(animationProperty); + + posAnim->start(); + + view.resize(800,600); + view.show(); + return app.exec(); +} + |