summaryrefslogtreecommitdiffstats
path: root/examples/animation/research/memberfunctions/main.cpp
diff options
context:
space:
mode:
authorAlexis Menard <alexis.menard@nokia.com>2009-04-17 10:40:52 (GMT)
committerAlexis Menard <alexis.menard@nokia.com>2009-04-17 10:40:52 (GMT)
commitbb2e4df9bee3148e819c98410aa36e22dad95d7a (patch)
treea6e6e8c070a72378d4b2e5f39ad3cc9c368b61ab /examples/animation/research/memberfunctions/main.cpp
downloadQt-bb2e4df9bee3148e819c98410aa36e22dad95d7a.zip
Qt-bb2e4df9bee3148e819c98410aa36e22dad95d7a.tar.gz
Qt-bb2e4df9bee3148e819c98410aa36e22dad95d7a.tar.bz2
Initial import of kinetic-animations branch from the old kinetic
repository to the new repository
Diffstat (limited to 'examples/animation/research/memberfunctions/main.cpp')
-rw-r--r--examples/animation/research/memberfunctions/main.cpp48
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();
+}
+