SlideShare a Scribd company logo
1 of 30
Download to read offline
Qt 
Animation 
William.L 2010-05-19 
wiliwe@gmail.com
Outline 
 What is animation? 
 Timer 
 Timeline 
 Animation Framework 
 State Machine Framework 
 GraphicsView Framework
What is animation? 
 A series of pictures, each of which is shown for a 
fixed period
Timer (1/2) 
 Class – QTimer 
 Provides repetitive and single-shot timers 
 Emit the timeout() signal at constant intervals. 
 Usage 
 Create a QTimer 
 Connect its timeout() signal to the appropriate slots 
 Call start() with constant interval(in millisecond) parameter 
 From then on it will emit the timeout() signal at constant intervals. 
QTimer *timer = new QTimer(this); 
connect(timer, SIGNAL(timeout()), 
this, SLOT(doSomethingWhenTimeout())); 
timer-start(1000);
Timer (2/2) 
 Example 
 Timer-Button 
 A QPushButton moving between two points
Timeline (1/3) 
 Class – QTimeLine 
 Introduced in Qt 4.2 
 Most commonly used to animate a GUI control by calling 
a slot periodically. 
 Usage 
 Construct a QTimeLine object with duration value in 
milliseconds 
 The duration describes for how long the animation will run. 
 Set a suitable frame range by calling setFrameRange(). 
 Connect the frameChanged() signal to a suitable slot in the 
widget you wish to animate. 
 Ex : call setValue() in QProgressBar 
 Finally calling start(), QTimeLine will enter Running state 
 When done, QTimeLine enters NotRunning state, and emits 
finished().
Timeline (2/3) 
 Usage 
// Construct a 1-second(1000ms) timeline with a frame range of 0 - 100 
QTimeLine *timeLine = new QTimeLine (1000, Parent); 
timeLine-setFrameRange (0, 100); 
connect ( timeLine, SIGNAL(frameChanged(int)), 
widget, SLOT(Widget-Slot()) );
Timeline (3/3) 
 Other Methods 
 setLoopCount() 
 Holds the number of times the timeline should loop before it's 
finished. 
 0 means that the timeline will loop forever. 
 setUpdateInterval() 
 Holds the time in milliseconds between each time QTimeLine 
updates its current time 
 Default is 40ms (e.g. 25 frames per second) 
 setCurveShape() 
 Holds the shape of the timeline curve (how the timeline’s velocity 
change) 
 Default is EaseInOutCurve 
 Example 
 Timeline-Progressbar 
 Use timeline to increase the progress of the progress bar.
Animation Framework (1/5) 
 Introduced in 4.6 
 Part of the Kinetic project 
 Makes it easy to animate QObjects, including QWidgets, 
by allowing Qt properties to be animated. 
 Animations are controlled using Easing Curves and can 
be grouped together.
Animation Framework (2/5) 
 Perform animation of a Qt property (color, size, 
location, etc.) 
 QPropertyAnimation class 
 Containers for animating animations together 
 QSequentialAnimationGroup class 
 Contains animations are animating in sequence 
 QParallelAnimationGroup class 
 Contains animations are animating in parallel
Animation Framework (3/5) 
 Usage 
 Create a widget instance wanted to be animated. 
 Create a QPropertyAnimation instance passed widget instance 
and the widget’s property name wanted to be animated 
 Set animation duration 
 Set animated widget’s star/end property value through 
QPropertyAnimation methods, setStartValue() / setEndValue() 
 Call QPropertyAnimation’s start() method to start animating 
QPropertyAnimation *animation = new QPropertyAnimation(Widget, geometry); 
animation-setDuration(10000); // 10 seconds 
animation-setStartValue(QRect(250, 250, 100, 30)); 
animation-setEndValue(QRect(500, 450, 100, 30)); 
animation-start();
Animation Framework (4/5) 
 Fine Control 
 setKeyValueAt (step, value) 
 Creates a key frame at the given step with the given value. The given 
step must be in the range 0 to 1. 
QPropertyAnimation *animation = new QPropertyAnimation(Widget, geometry); 
animation-setDuration(10000); // 10 seconds 
animation.setKeyValueAt(0, QRect(250, 250, 100, 30)); 
animation.setKeyValueAt(0.25, QRect(250, 450, 100, 30)); 
animation.setKeyValueAt(0.5, QRect(500, 450, 100, 30)); 
animation.setKeyValueAt(0.75, QRect(500, 250, 100, 30)); 
animation.setKeyValueAt(1, QRect(250, 250, 100, 30)); 
animation-start();
Animation Framework (5/5) 
 Example 
 AnimFmwk-BounceEasyCurve-ParalSequ 
 Three buttons animating in sequential and parallel animations 
with easing curve 
 AnimFmwk-SetKeyValue 
 An animating button controlled by setKeyValueAt()
Qt State Machine Framework (1/7) 
 Classes – QStateMachine, QState, QFinalState, 
QSignalTransition 
 For creating and executing state graphs. 
 Provides an API and execution model that can be used 
to effectively embed the elements and semantics of 
statecharts in Qt applications. 
 Qt's event system is used to drive the state machines. 
 The animation framework also plugs into the new Qt 
state machine by allowing an animation to be played 
when transitions are triggered.
Qt State Machine Framework (2/7) 
 Components 
 QStateMachine 
 Manages a set of states and transitions 
 Hierarchical 
 Use the addState() function to add a top-level state(QState) to the 
state machine. 
 Before the machine can be started, use setInitialState() method to 
set the initial state 
 Call start() method to start the state machine 
 The started() signal is emitted when the initial state is entered 
 Call stop() to stop the state machine explicitly 
S1 
S1-1 S1-2 
S2
Qt State Machine Framework (3/7) 
 Components 
 QState 
 Represents a general-purpose state for QStateMachine 
 Can have child states 
 Can have transitions to other states 
 Use addTransition(sender,signal,target-state) method to add a 
transition, this will return a QSignalTransition object 
 Call addAnimation() of the returned QSignalTransition object and 
pass a QPropertyAnimation object to create a transition 
animation 
 QFinalState 
 Represents a final state 
 Used to communicate that a QStateMachine has finished its work 
 finished() signal will be emitted when entering the final state
Qt State Machine Framework (4/7) 
 Components 
 QSignalTransition 
 Provides a transition based on a Qt signal.
Qt State Machine Framework (5/7)
Qt State Machine Framework (6/7) 
 Usage 
QPushButton button(StateMachine Button); 
button.show(); 
QStateMachine machine; 
QState *state1 = new QState(); 
state1-assignProperty(button, geometry, QRect(200, 200, 100, 100)); 
QState *state2 = new QState(); 
state2-assignProperty(button, geometry, QRect(450, 450, 100, 100)); 
QFinalState *state3 = new QFinalState(); 
QSignalTransition *transition1 = state1-addTransition(button, SIGNAL(clicked()), state2); 
transition1-addAnimation(new QPropertyAnimation(button, geometry)); 
state2-addTransition(button, SIGNAL(clicked()), state3); 
machine.addState(state1); 
machine.addState(state2); 
machine.addState(state3); 
QObject::connect(machine, SIGNAL(finished()),QApplication::instance(), SLOT(quit())); 
machine.setInitialState(state1); 
machine.start();
Qt State Machine Framework (7/7) 
 Example 
 StateMachine-AnimButton 
 A QPushButton moves and changes its states when it is 
pressed. When reaching final state, the application will quit.
GraphicsView Framework (1/8) 
 Introduced in Qt 4.2 
 Replaced its predecessor, QCanvas 
 Item-based 
 Provides 
 A surface(scene) for managing and interacting with a large 
number of custom-made 2D graphical items 
 A view widget for visualizing the items, with support for zooming 
and rotation. 
 Items are varying geometric shapes(rectangle, line, circle, etc.)
GraphicsView Framework (2/8) 
Scene(Canvas) 
Line item 
Text item 
Rectangle item 
View 
Vertical 
Scrollbar 
Thumb 
Horizontal Scrollbar 
Thumb 
Ellipse 
item 
The dash-line 
rectangle is the 
visible area to 
human
GraphicsView Framework (3/8) 
 Components 
 The Scene - QGraphicsScene 
 Serves as a container for QGraphicsItem objects 
 Manages a large number of items 
 Propagating events from QGraphicsView to each item 
 Managing item state, such as item selection and focus.
GraphicsView Framework (4/8) 
 Components 
 The View - QGraphicsView 
 Provides the view widget 
 To visualize the contents of a scene 
 It is a scroll area 
 Can attach several views to the same scene 
 provide several viewports into the same data set. 
 Receives input events from the keyboard and mouse, and translates 
these to scene events
GraphicsView Framework (5/8) 
 Components 
 The Item – QGraphicsItem 
 The base class for graphical items in a scene 
 Detect mouse events 
 Grab keyboard input focus 
 Drag  Drop 
 Grouping 
 Collision detection
GraphicsView Framework (6/8) 
 Comparison between GraphicsView 
framework and Clutter 
Clutter 
Stage 
GraphicsView 
Framework 
GraphicsScene 
The place where 
visual elements 
exist (canvas) 
Visual Element GraphicsItem Actor 
Represnetation 
Viewport GraphicsView Gtk_Clutter_Viewport
GraphicsView Framework (7/8) 
 Usage 
 Create a QGraphicsScene object 
 Add objects of QGraphicsItem to the QGraphicsScene object 
using addXXX() method, where “XXX” means the type of 
graphics item. 
 Create a QGraphicsView object and set the created 
QGraphicsScene object with the method setScene() 
 Finally, let QGraphicsView object be visible by calling show() 
method. Or add created QGraphicsView object to a 
QMainWindow object by calling setCentralWidget()
GraphicsView Framework (8/8) 
 Example 
 GrphView-SimpleAnim 
 Shows how scene/view/items work together and an animation 
that a rectangle graphic item moves and fades out.
Example Source Codes Download 
 The example codes for this slide (GitHub). 
 https://github.com/wiliwe/qt-animation-example.git 
 Using Git tool to download: 
git clone https://github.com/wiliwe/qt-animation-example.git
References 
 http://doc.qt.nokia.com/4.6/qtimer.html 
 http://doc.qt.nokia.com/4.6/qtimeline.html 
 http://doc.qt.nokia.com/4.6/qtimeline.html#CurveShape-enum 
 http://doc.qt.nokia.com/4.6/animation-overview.html 
 http://doc.qt.nokia.com/4.6/statemachine-api.html 
 http://doc.qt.nokia.com/4.6/graphicsview.html 
 http://doc.qt.nokia.com/4.6/qgraphicsscene.html 
 http://doc.qt.nokia.com/4.6/qgraphicsitem.html

More Related Content

Viewers also liked

Special Effects with Qt Graphics View
Special Effects with Qt Graphics ViewSpecial Effects with Qt Graphics View
Special Effects with Qt Graphics Viewaccount inactive
 
Creating Slick User Interfaces With Qt
Creating Slick User Interfaces With QtCreating Slick User Interfaces With Qt
Creating Slick User Interfaces With QtEspen Riskedal
 
Case Study: Using Qt to Develop Advanced GUIs & Advanced Visualization Software
Case Study: Using Qt to Develop Advanced GUIs & Advanced Visualization SoftwareCase Study: Using Qt to Develop Advanced GUIs & Advanced Visualization Software
Case Study: Using Qt to Develop Advanced GUIs & Advanced Visualization Softwareaccount inactive
 
Efficient Graphics with Qt
Efficient Graphics with QtEfficient Graphics with Qt
Efficient Graphics with QtAriya Hidayat
 
Usage Note of Apache Thrift for C++ Java PHP Languages
Usage Note of Apache Thrift for C++ Java PHP LanguagesUsage Note of Apache Thrift for C++ Java PHP Languages
Usage Note of Apache Thrift for C++ Java PHP LanguagesWilliam Lee
 
Learn how to develop applications and UIs with Qt Commercial
Learn how to develop applications and UIs with Qt CommercialLearn how to develop applications and UIs with Qt Commercial
Learn how to develop applications and UIs with Qt CommercialQt Commercial, Digia
 
Android GDB Debugging (Chinese)
Android GDB Debugging (Chinese)Android GDB Debugging (Chinese)
Android GDB Debugging (Chinese)William Lee
 
Android Storage - StorageManager & OBB
Android Storage - StorageManager & OBBAndroid Storage - StorageManager & OBB
Android Storage - StorageManager & OBBWilliam Lee
 
SE Computer, Programming Laboratory(210251) University of Pune
SE Computer, Programming Laboratory(210251) University of PuneSE Computer, Programming Laboratory(210251) University of Pune
SE Computer, Programming Laboratory(210251) University of PuneBhavesh Shah
 
Android Storage - Internal and External Storages
Android Storage - Internal and External StoragesAndroid Storage - Internal and External Storages
Android Storage - Internal and External StoragesWilliam Lee
 
Introduction to SIP(Session Initiation Protocol)
Introduction to SIP(Session Initiation Protocol)Introduction to SIP(Session Initiation Protocol)
Introduction to SIP(Session Initiation Protocol)William Lee
 
Android Storage - Vold
Android Storage - VoldAndroid Storage - Vold
Android Storage - VoldWilliam Lee
 

Viewers also liked (15)

Special Effects with Qt Graphics View
Special Effects with Qt Graphics ViewSpecial Effects with Qt Graphics View
Special Effects with Qt Graphics View
 
Creating Slick User Interfaces With Qt
Creating Slick User Interfaces With QtCreating Slick User Interfaces With Qt
Creating Slick User Interfaces With Qt
 
Case Study: Using Qt to Develop Advanced GUIs & Advanced Visualization Software
Case Study: Using Qt to Develop Advanced GUIs & Advanced Visualization SoftwareCase Study: Using Qt to Develop Advanced GUIs & Advanced Visualization Software
Case Study: Using Qt to Develop Advanced GUIs & Advanced Visualization Software
 
Efficient Graphics with Qt
Efficient Graphics with QtEfficient Graphics with Qt
Efficient Graphics with Qt
 
Usage Note of Apache Thrift for C++ Java PHP Languages
Usage Note of Apache Thrift for C++ Java PHP LanguagesUsage Note of Apache Thrift for C++ Java PHP Languages
Usage Note of Apache Thrift for C++ Java PHP Languages
 
Learn how to develop applications and UIs with Qt Commercial
Learn how to develop applications and UIs with Qt CommercialLearn how to develop applications and UIs with Qt Commercial
Learn how to develop applications and UIs with Qt Commercial
 
Android GDB Debugging (Chinese)
Android GDB Debugging (Chinese)Android GDB Debugging (Chinese)
Android GDB Debugging (Chinese)
 
Qt Widget In-Depth
Qt Widget In-DepthQt Widget In-Depth
Qt Widget In-Depth
 
Android Storage - StorageManager & OBB
Android Storage - StorageManager & OBBAndroid Storage - StorageManager & OBB
Android Storage - StorageManager & OBB
 
MGCP Overview
MGCP OverviewMGCP Overview
MGCP Overview
 
SE Computer, Programming Laboratory(210251) University of Pune
SE Computer, Programming Laboratory(210251) University of PuneSE Computer, Programming Laboratory(210251) University of Pune
SE Computer, Programming Laboratory(210251) University of Pune
 
Android Storage - Internal and External Storages
Android Storage - Internal and External StoragesAndroid Storage - Internal and External Storages
Android Storage - Internal and External Storages
 
Introduction to SIP(Session Initiation Protocol)
Introduction to SIP(Session Initiation Protocol)Introduction to SIP(Session Initiation Protocol)
Introduction to SIP(Session Initiation Protocol)
 
MTP & PTP
MTP & PTPMTP & PTP
MTP & PTP
 
Android Storage - Vold
Android Storage - VoldAndroid Storage - Vold
Android Storage - Vold
 

Similar to Qt Animation

Petri Niemi Qt Advanced Part 2
Petri Niemi Qt Advanced Part 2Petri Niemi Qt Advanced Part 2
Petri Niemi Qt Advanced Part 2NokiaAppForum
 
Useful Tools for Making Video Games - XNA (2008)
Useful Tools for Making Video Games - XNA (2008)Useful Tools for Making Video Games - XNA (2008)
Useful Tools for Making Video Games - XNA (2008)Korhan Bircan
 
[C++ gui programming with qt4] chap9
[C++ gui programming with qt4] chap9[C++ gui programming with qt4] chap9
[C++ gui programming with qt4] chap9Shih-Hsiang Lin
 
Qt & Webkit
Qt & WebkitQt & Webkit
Qt & WebkitQT-day
 
The Ring programming language version 1.6 book - Part 67 of 189
The Ring programming language version 1.6 book - Part 67 of 189The Ring programming language version 1.6 book - Part 67 of 189
The Ring programming language version 1.6 book - Part 67 of 189Mahmoud Samir Fayed
 
The Ring programming language version 1.5.1 book - Part 61 of 180
The Ring programming language version 1.5.1 book - Part 61 of 180The Ring programming language version 1.5.1 book - Part 61 of 180
The Ring programming language version 1.5.1 book - Part 61 of 180Mahmoud Samir Fayed
 
The Ring programming language version 1.10 book - Part 76 of 212
The Ring programming language version 1.10 book - Part 76 of 212The Ring programming language version 1.10 book - Part 76 of 212
The Ring programming language version 1.10 book - Part 76 of 212Mahmoud Samir Fayed
 
The Ring programming language version 1.8 book - Part 71 of 202
The Ring programming language version 1.8 book - Part 71 of 202The Ring programming language version 1.8 book - Part 71 of 202
The Ring programming language version 1.8 book - Part 71 of 202Mahmoud Samir Fayed
 
The Ring programming language version 1.8 book - Part 67 of 202
The Ring programming language version 1.8 book - Part 67 of 202The Ring programming language version 1.8 book - Part 67 of 202
The Ring programming language version 1.8 book - Part 67 of 202Mahmoud Samir Fayed
 
The Ring programming language version 1.5.3 book - Part 80 of 184
The Ring programming language version 1.5.3 book - Part 80 of 184The Ring programming language version 1.5.3 book - Part 80 of 184
The Ring programming language version 1.5.3 book - Part 80 of 184Mahmoud Samir Fayed
 
The Ring programming language version 1.2 book - Part 45 of 84
The Ring programming language version 1.2 book - Part 45 of 84The Ring programming language version 1.2 book - Part 45 of 84
The Ring programming language version 1.2 book - Part 45 of 84Mahmoud Samir Fayed
 
The Ring programming language version 1.7 book - Part 65 of 196
The Ring programming language version 1.7 book - Part 65 of 196The Ring programming language version 1.7 book - Part 65 of 196
The Ring programming language version 1.7 book - Part 65 of 196Mahmoud Samir Fayed
 
The Ring programming language version 1.4.1 book - Part 17 of 31
The Ring programming language version 1.4.1 book - Part 17 of 31The Ring programming language version 1.4.1 book - Part 17 of 31
The Ring programming language version 1.4.1 book - Part 17 of 31Mahmoud Samir Fayed
 
05 - Qt External Interaction and Graphics
05 - Qt External Interaction and Graphics05 - Qt External Interaction and Graphics
05 - Qt External Interaction and GraphicsAndreas Jakl
 
Google Fit, Android Wear & Xamarin
Google Fit, Android Wear & XamarinGoogle Fit, Android Wear & Xamarin
Google Fit, Android Wear & XamarinPeter Friese
 
The Ring programming language version 1.10 book - Part 82 of 212
The Ring programming language version 1.10 book - Part 82 of 212The Ring programming language version 1.10 book - Part 82 of 212
The Ring programming language version 1.10 book - Part 82 of 212Mahmoud Samir Fayed
 
Java agents are watching your ByteCode
Java agents are watching your ByteCodeJava agents are watching your ByteCode
Java agents are watching your ByteCodeRoman Tsypuk
 
The Ring programming language version 1.5.4 book - Part 64 of 185
The Ring programming language version 1.5.4 book - Part 64 of 185The Ring programming language version 1.5.4 book - Part 64 of 185
The Ring programming language version 1.5.4 book - Part 64 of 185Mahmoud Samir Fayed
 

Similar to Qt Animation (20)

State Machine Framework
State Machine FrameworkState Machine Framework
State Machine Framework
 
Petri Niemi Qt Advanced Part 2
Petri Niemi Qt Advanced Part 2Petri Niemi Qt Advanced Part 2
Petri Niemi Qt Advanced Part 2
 
Useful Tools for Making Video Games - XNA (2008)
Useful Tools for Making Video Games - XNA (2008)Useful Tools for Making Video Games - XNA (2008)
Useful Tools for Making Video Games - XNA (2008)
 
[C++ gui programming with qt4] chap9
[C++ gui programming with qt4] chap9[C++ gui programming with qt4] chap9
[C++ gui programming with qt4] chap9
 
Qt & Webkit
Qt & WebkitQt & Webkit
Qt & Webkit
 
The Ring programming language version 1.6 book - Part 67 of 189
The Ring programming language version 1.6 book - Part 67 of 189The Ring programming language version 1.6 book - Part 67 of 189
The Ring programming language version 1.6 book - Part 67 of 189
 
The Ring programming language version 1.5.1 book - Part 61 of 180
The Ring programming language version 1.5.1 book - Part 61 of 180The Ring programming language version 1.5.1 book - Part 61 of 180
The Ring programming language version 1.5.1 book - Part 61 of 180
 
The Ring programming language version 1.10 book - Part 76 of 212
The Ring programming language version 1.10 book - Part 76 of 212The Ring programming language version 1.10 book - Part 76 of 212
The Ring programming language version 1.10 book - Part 76 of 212
 
The Ring programming language version 1.8 book - Part 71 of 202
The Ring programming language version 1.8 book - Part 71 of 202The Ring programming language version 1.8 book - Part 71 of 202
The Ring programming language version 1.8 book - Part 71 of 202
 
The Ring programming language version 1.8 book - Part 67 of 202
The Ring programming language version 1.8 book - Part 67 of 202The Ring programming language version 1.8 book - Part 67 of 202
The Ring programming language version 1.8 book - Part 67 of 202
 
The Ring programming language version 1.5.3 book - Part 80 of 184
The Ring programming language version 1.5.3 book - Part 80 of 184The Ring programming language version 1.5.3 book - Part 80 of 184
The Ring programming language version 1.5.3 book - Part 80 of 184
 
The Ring programming language version 1.2 book - Part 45 of 84
The Ring programming language version 1.2 book - Part 45 of 84The Ring programming language version 1.2 book - Part 45 of 84
The Ring programming language version 1.2 book - Part 45 of 84
 
The Ring programming language version 1.7 book - Part 65 of 196
The Ring programming language version 1.7 book - Part 65 of 196The Ring programming language version 1.7 book - Part 65 of 196
The Ring programming language version 1.7 book - Part 65 of 196
 
The Ring programming language version 1.4.1 book - Part 17 of 31
The Ring programming language version 1.4.1 book - Part 17 of 31The Ring programming language version 1.4.1 book - Part 17 of 31
The Ring programming language version 1.4.1 book - Part 17 of 31
 
05 - Qt External Interaction and Graphics
05 - Qt External Interaction and Graphics05 - Qt External Interaction and Graphics
05 - Qt External Interaction and Graphics
 
Google Fit, Android Wear & Xamarin
Google Fit, Android Wear & XamarinGoogle Fit, Android Wear & Xamarin
Google Fit, Android Wear & Xamarin
 
Treinamento Qt básico - aula II
Treinamento Qt básico - aula IITreinamento Qt básico - aula II
Treinamento Qt básico - aula II
 
The Ring programming language version 1.10 book - Part 82 of 212
The Ring programming language version 1.10 book - Part 82 of 212The Ring programming language version 1.10 book - Part 82 of 212
The Ring programming language version 1.10 book - Part 82 of 212
 
Java agents are watching your ByteCode
Java agents are watching your ByteCodeJava agents are watching your ByteCode
Java agents are watching your ByteCode
 
The Ring programming language version 1.5.4 book - Part 64 of 185
The Ring programming language version 1.5.4 book - Part 64 of 185The Ring programming language version 1.5.4 book - Part 64 of 185
The Ring programming language version 1.5.4 book - Part 64 of 185
 

More from William Lee

Usage Note of Qt ODBC Database Access on Linux
Usage Note of Qt ODBC Database Access on LinuxUsage Note of Qt ODBC Database Access on Linux
Usage Note of Qt ODBC Database Access on LinuxWilliam Lee
 
Usage Note of SWIG for PHP
Usage Note of SWIG for PHPUsage Note of SWIG for PHP
Usage Note of SWIG for PHPWilliam Lee
 
Upgrade GCC & Install Qt 5.4 on CentOS 6.5
Upgrade GCC & Install Qt 5.4 on CentOS 6.5 Upgrade GCC & Install Qt 5.4 on CentOS 6.5
Upgrade GCC & Install Qt 5.4 on CentOS 6.5 William Lee
 
Usage Notes of The Bro 2.2 / 2.3
Usage Notes of The Bro 2.2 / 2.3Usage Notes of The Bro 2.2 / 2.3
Usage Notes of The Bro 2.2 / 2.3William Lee
 
Viewing Android Source Files in Eclipse (Chinese)
Viewing Android Source Files in Eclipse  (Chinese)Viewing Android Source Files in Eclipse  (Chinese)
Viewing Android Source Files in Eclipse (Chinese)William Lee
 
Usage Note of Microsoft Dependency Walker
Usage Note of Microsoft Dependency WalkerUsage Note of Microsoft Dependency Walker
Usage Note of Microsoft Dependency WalkerWilliam Lee
 
Usage Note of PlayCap
Usage Note of PlayCapUsage Note of PlayCap
Usage Note of PlayCapWilliam Lee
 
Qt4 App - Sliding Window
Qt4 App - Sliding WindowQt4 App - Sliding Window
Qt4 App - Sliding WindowWilliam Lee
 
GTK+ 2.0 App - Desktop App Chooser
GTK+ 2.0 App - Desktop App ChooserGTK+ 2.0 App - Desktop App Chooser
GTK+ 2.0 App - Desktop App ChooserWilliam Lee
 
GTK+ 2.0 App - Icon Chooser
GTK+ 2.0 App - Icon ChooserGTK+ 2.0 App - Icon Chooser
GTK+ 2.0 App - Icon ChooserWilliam Lee
 
Note of CGI and ASP
Note of CGI and ASPNote of CGI and ASP
Note of CGI and ASPWilliam Lee
 
Moblin2 - Window Manager(Mutter) Plugin
Moblin2 - Window Manager(Mutter) PluginMoblin2 - Window Manager(Mutter) Plugin
Moblin2 - Window Manager(Mutter) PluginWilliam Lee
 
Asterisk (IP-PBX) CDR Log Rotation
Asterisk (IP-PBX) CDR Log RotationAsterisk (IP-PBX) CDR Log Rotation
Asterisk (IP-PBX) CDR Log RotationWilliam Lee
 
L.A.M.P Installation Note --- CentOS 6.5
L.A.M.P Installation Note --- CentOS 6.5L.A.M.P Installation Note --- CentOS 6.5
L.A.M.P Installation Note --- CentOS 6.5William Lee
 
C Program Runs on Wrong Target Platform(CPU Architecture)
C Program Runs on Wrong Target Platform(CPU Architecture)C Program Runs on Wrong Target Platform(CPU Architecture)
C Program Runs on Wrong Target Platform(CPU Architecture)William Lee
 
Internationalization(i18n) of Web Page
Internationalization(i18n) of Web PageInternationalization(i18n) of Web Page
Internationalization(i18n) of Web PageWilliam Lee
 
Notes for SQLite3 Usage
Notes for SQLite3 UsageNotes for SQLite3 Usage
Notes for SQLite3 UsageWilliam Lee
 
Cygwin Install How-To (Chinese)
Cygwin Install How-To (Chinese)Cygwin Install How-To (Chinese)
Cygwin Install How-To (Chinese)William Lee
 
Study of Chromium OS
Study of Chromium OSStudy of Chromium OS
Study of Chromium OSWilliam Lee
 
GNOME GeoClue - The Geolocation Service in Gnome
GNOME GeoClue - The Geolocation Service in GnomeGNOME GeoClue - The Geolocation Service in Gnome
GNOME GeoClue - The Geolocation Service in GnomeWilliam Lee
 

More from William Lee (20)

Usage Note of Qt ODBC Database Access on Linux
Usage Note of Qt ODBC Database Access on LinuxUsage Note of Qt ODBC Database Access on Linux
Usage Note of Qt ODBC Database Access on Linux
 
Usage Note of SWIG for PHP
Usage Note of SWIG for PHPUsage Note of SWIG for PHP
Usage Note of SWIG for PHP
 
Upgrade GCC & Install Qt 5.4 on CentOS 6.5
Upgrade GCC & Install Qt 5.4 on CentOS 6.5 Upgrade GCC & Install Qt 5.4 on CentOS 6.5
Upgrade GCC & Install Qt 5.4 on CentOS 6.5
 
Usage Notes of The Bro 2.2 / 2.3
Usage Notes of The Bro 2.2 / 2.3Usage Notes of The Bro 2.2 / 2.3
Usage Notes of The Bro 2.2 / 2.3
 
Viewing Android Source Files in Eclipse (Chinese)
Viewing Android Source Files in Eclipse  (Chinese)Viewing Android Source Files in Eclipse  (Chinese)
Viewing Android Source Files in Eclipse (Chinese)
 
Usage Note of Microsoft Dependency Walker
Usage Note of Microsoft Dependency WalkerUsage Note of Microsoft Dependency Walker
Usage Note of Microsoft Dependency Walker
 
Usage Note of PlayCap
Usage Note of PlayCapUsage Note of PlayCap
Usage Note of PlayCap
 
Qt4 App - Sliding Window
Qt4 App - Sliding WindowQt4 App - Sliding Window
Qt4 App - Sliding Window
 
GTK+ 2.0 App - Desktop App Chooser
GTK+ 2.0 App - Desktop App ChooserGTK+ 2.0 App - Desktop App Chooser
GTK+ 2.0 App - Desktop App Chooser
 
GTK+ 2.0 App - Icon Chooser
GTK+ 2.0 App - Icon ChooserGTK+ 2.0 App - Icon Chooser
GTK+ 2.0 App - Icon Chooser
 
Note of CGI and ASP
Note of CGI and ASPNote of CGI and ASP
Note of CGI and ASP
 
Moblin2 - Window Manager(Mutter) Plugin
Moblin2 - Window Manager(Mutter) PluginMoblin2 - Window Manager(Mutter) Plugin
Moblin2 - Window Manager(Mutter) Plugin
 
Asterisk (IP-PBX) CDR Log Rotation
Asterisk (IP-PBX) CDR Log RotationAsterisk (IP-PBX) CDR Log Rotation
Asterisk (IP-PBX) CDR Log Rotation
 
L.A.M.P Installation Note --- CentOS 6.5
L.A.M.P Installation Note --- CentOS 6.5L.A.M.P Installation Note --- CentOS 6.5
L.A.M.P Installation Note --- CentOS 6.5
 
C Program Runs on Wrong Target Platform(CPU Architecture)
C Program Runs on Wrong Target Platform(CPU Architecture)C Program Runs on Wrong Target Platform(CPU Architecture)
C Program Runs on Wrong Target Platform(CPU Architecture)
 
Internationalization(i18n) of Web Page
Internationalization(i18n) of Web PageInternationalization(i18n) of Web Page
Internationalization(i18n) of Web Page
 
Notes for SQLite3 Usage
Notes for SQLite3 UsageNotes for SQLite3 Usage
Notes for SQLite3 Usage
 
Cygwin Install How-To (Chinese)
Cygwin Install How-To (Chinese)Cygwin Install How-To (Chinese)
Cygwin Install How-To (Chinese)
 
Study of Chromium OS
Study of Chromium OSStudy of Chromium OS
Study of Chromium OS
 
GNOME GeoClue - The Geolocation Service in Gnome
GNOME GeoClue - The Geolocation Service in GnomeGNOME GeoClue - The Geolocation Service in Gnome
GNOME GeoClue - The Geolocation Service in Gnome
 

Recently uploaded

Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...
Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...
Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...panagenda
 
How to Check GPS Location with a Live Tracker in Pakistan
How to Check GPS Location with a Live Tracker in PakistanHow to Check GPS Location with a Live Tracker in Pakistan
How to Check GPS Location with a Live Tracker in Pakistandanishmna97
 
Portal Kombat : extension du réseau de propagande russe
Portal Kombat : extension du réseau de propagande russePortal Kombat : extension du réseau de propagande russe
Portal Kombat : extension du réseau de propagande russe中 央社
 
WebAssembly is Key to Better LLM Performance
WebAssembly is Key to Better LLM PerformanceWebAssembly is Key to Better LLM Performance
WebAssembly is Key to Better LLM PerformanceSamy Fodil
 
AI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by AnitarajAI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by AnitarajAnitaRaj43
 
WebRTC and SIP not just audio and video @ OpenSIPS 2024
WebRTC and SIP not just audio and video @ OpenSIPS 2024WebRTC and SIP not just audio and video @ OpenSIPS 2024
WebRTC and SIP not just audio and video @ OpenSIPS 2024Lorenzo Miniero
 
Event-Driven Architecture Masterclass: Integrating Distributed Data Stores Ac...
Event-Driven Architecture Masterclass: Integrating Distributed Data Stores Ac...Event-Driven Architecture Masterclass: Integrating Distributed Data Stores Ac...
Event-Driven Architecture Masterclass: Integrating Distributed Data Stores Ac...ScyllaDB
 
Working together SRE & Platform Engineering
Working together SRE & Platform EngineeringWorking together SRE & Platform Engineering
Working together SRE & Platform EngineeringMarcus Vechiato
 
Event-Driven Architecture Masterclass: Challenges in Stream Processing
Event-Driven Architecture Masterclass: Challenges in Stream ProcessingEvent-Driven Architecture Masterclass: Challenges in Stream Processing
Event-Driven Architecture Masterclass: Challenges in Stream ProcessingScyllaDB
 
Introduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDMIntroduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDMKumar Satyam
 
UiPath manufacturing technology benefits and AI overview
UiPath manufacturing technology benefits and AI overviewUiPath manufacturing technology benefits and AI overview
UiPath manufacturing technology benefits and AI overviewDianaGray10
 
Cyber Insurance - RalphGilot - Embry-Riddle Aeronautical University.pptx
Cyber Insurance - RalphGilot - Embry-Riddle Aeronautical University.pptxCyber Insurance - RalphGilot - Embry-Riddle Aeronautical University.pptx
Cyber Insurance - RalphGilot - Embry-Riddle Aeronautical University.pptxMasterG
 
Tales from a Passkey Provider Progress from Awareness to Implementation.pptx
Tales from a Passkey Provider  Progress from Awareness to Implementation.pptxTales from a Passkey Provider  Progress from Awareness to Implementation.pptx
Tales from a Passkey Provider Progress from Awareness to Implementation.pptxFIDO Alliance
 
Google I/O Extended 2024 Warsaw
Google I/O Extended 2024 WarsawGoogle I/O Extended 2024 Warsaw
Google I/O Extended 2024 WarsawGDSC PJATK
 
2024 May Patch Tuesday
2024 May Patch Tuesday2024 May Patch Tuesday
2024 May Patch TuesdayIvanti
 
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...marcuskenyatta275
 
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)Samir Dash
 
Introduction to FIDO Authentication and Passkeys.pptx
Introduction to FIDO Authentication and Passkeys.pptxIntroduction to FIDO Authentication and Passkeys.pptx
Introduction to FIDO Authentication and Passkeys.pptxFIDO Alliance
 
How we scaled to 80K users by doing nothing!.pdf
How we scaled to 80K users by doing nothing!.pdfHow we scaled to 80K users by doing nothing!.pdf
How we scaled to 80K users by doing nothing!.pdfSrushith Repakula
 

Recently uploaded (20)

Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...
Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...
Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...
 
How to Check GPS Location with a Live Tracker in Pakistan
How to Check GPS Location with a Live Tracker in PakistanHow to Check GPS Location with a Live Tracker in Pakistan
How to Check GPS Location with a Live Tracker in Pakistan
 
Portal Kombat : extension du réseau de propagande russe
Portal Kombat : extension du réseau de propagande russePortal Kombat : extension du réseau de propagande russe
Portal Kombat : extension du réseau de propagande russe
 
WebAssembly is Key to Better LLM Performance
WebAssembly is Key to Better LLM PerformanceWebAssembly is Key to Better LLM Performance
WebAssembly is Key to Better LLM Performance
 
AI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by AnitarajAI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by Anitaraj
 
WebRTC and SIP not just audio and video @ OpenSIPS 2024
WebRTC and SIP not just audio and video @ OpenSIPS 2024WebRTC and SIP not just audio and video @ OpenSIPS 2024
WebRTC and SIP not just audio and video @ OpenSIPS 2024
 
Event-Driven Architecture Masterclass: Integrating Distributed Data Stores Ac...
Event-Driven Architecture Masterclass: Integrating Distributed Data Stores Ac...Event-Driven Architecture Masterclass: Integrating Distributed Data Stores Ac...
Event-Driven Architecture Masterclass: Integrating Distributed Data Stores Ac...
 
Working together SRE & Platform Engineering
Working together SRE & Platform EngineeringWorking together SRE & Platform Engineering
Working together SRE & Platform Engineering
 
Event-Driven Architecture Masterclass: Challenges in Stream Processing
Event-Driven Architecture Masterclass: Challenges in Stream ProcessingEvent-Driven Architecture Masterclass: Challenges in Stream Processing
Event-Driven Architecture Masterclass: Challenges in Stream Processing
 
Introduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDMIntroduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDM
 
UiPath manufacturing technology benefits and AI overview
UiPath manufacturing technology benefits and AI overviewUiPath manufacturing technology benefits and AI overview
UiPath manufacturing technology benefits and AI overview
 
Cyber Insurance - RalphGilot - Embry-Riddle Aeronautical University.pptx
Cyber Insurance - RalphGilot - Embry-Riddle Aeronautical University.pptxCyber Insurance - RalphGilot - Embry-Riddle Aeronautical University.pptx
Cyber Insurance - RalphGilot - Embry-Riddle Aeronautical University.pptx
 
Overview of Hyperledger Foundation
Overview of Hyperledger FoundationOverview of Hyperledger Foundation
Overview of Hyperledger Foundation
 
Tales from a Passkey Provider Progress from Awareness to Implementation.pptx
Tales from a Passkey Provider  Progress from Awareness to Implementation.pptxTales from a Passkey Provider  Progress from Awareness to Implementation.pptx
Tales from a Passkey Provider Progress from Awareness to Implementation.pptx
 
Google I/O Extended 2024 Warsaw
Google I/O Extended 2024 WarsawGoogle I/O Extended 2024 Warsaw
Google I/O Extended 2024 Warsaw
 
2024 May Patch Tuesday
2024 May Patch Tuesday2024 May Patch Tuesday
2024 May Patch Tuesday
 
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
 
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
 
Introduction to FIDO Authentication and Passkeys.pptx
Introduction to FIDO Authentication and Passkeys.pptxIntroduction to FIDO Authentication and Passkeys.pptx
Introduction to FIDO Authentication and Passkeys.pptx
 
How we scaled to 80K users by doing nothing!.pdf
How we scaled to 80K users by doing nothing!.pdfHow we scaled to 80K users by doing nothing!.pdf
How we scaled to 80K users by doing nothing!.pdf
 

Qt Animation

  • 1. Qt Animation William.L 2010-05-19 wiliwe@gmail.com
  • 2. Outline What is animation? Timer Timeline Animation Framework State Machine Framework GraphicsView Framework
  • 3. What is animation? A series of pictures, each of which is shown for a fixed period
  • 4. Timer (1/2) Class – QTimer Provides repetitive and single-shot timers Emit the timeout() signal at constant intervals. Usage Create a QTimer Connect its timeout() signal to the appropriate slots Call start() with constant interval(in millisecond) parameter From then on it will emit the timeout() signal at constant intervals. QTimer *timer = new QTimer(this); connect(timer, SIGNAL(timeout()), this, SLOT(doSomethingWhenTimeout())); timer-start(1000);
  • 5. Timer (2/2) Example Timer-Button A QPushButton moving between two points
  • 6. Timeline (1/3) Class – QTimeLine Introduced in Qt 4.2 Most commonly used to animate a GUI control by calling a slot periodically. Usage Construct a QTimeLine object with duration value in milliseconds The duration describes for how long the animation will run. Set a suitable frame range by calling setFrameRange(). Connect the frameChanged() signal to a suitable slot in the widget you wish to animate. Ex : call setValue() in QProgressBar Finally calling start(), QTimeLine will enter Running state When done, QTimeLine enters NotRunning state, and emits finished().
  • 7. Timeline (2/3) Usage // Construct a 1-second(1000ms) timeline with a frame range of 0 - 100 QTimeLine *timeLine = new QTimeLine (1000, Parent); timeLine-setFrameRange (0, 100); connect ( timeLine, SIGNAL(frameChanged(int)), widget, SLOT(Widget-Slot()) );
  • 8. Timeline (3/3) Other Methods setLoopCount() Holds the number of times the timeline should loop before it's finished. 0 means that the timeline will loop forever. setUpdateInterval() Holds the time in milliseconds between each time QTimeLine updates its current time Default is 40ms (e.g. 25 frames per second) setCurveShape() Holds the shape of the timeline curve (how the timeline’s velocity change) Default is EaseInOutCurve Example Timeline-Progressbar Use timeline to increase the progress of the progress bar.
  • 9. Animation Framework (1/5) Introduced in 4.6 Part of the Kinetic project Makes it easy to animate QObjects, including QWidgets, by allowing Qt properties to be animated. Animations are controlled using Easing Curves and can be grouped together.
  • 10. Animation Framework (2/5) Perform animation of a Qt property (color, size, location, etc.) QPropertyAnimation class Containers for animating animations together QSequentialAnimationGroup class Contains animations are animating in sequence QParallelAnimationGroup class Contains animations are animating in parallel
  • 11. Animation Framework (3/5) Usage Create a widget instance wanted to be animated. Create a QPropertyAnimation instance passed widget instance and the widget’s property name wanted to be animated Set animation duration Set animated widget’s star/end property value through QPropertyAnimation methods, setStartValue() / setEndValue() Call QPropertyAnimation’s start() method to start animating QPropertyAnimation *animation = new QPropertyAnimation(Widget, geometry); animation-setDuration(10000); // 10 seconds animation-setStartValue(QRect(250, 250, 100, 30)); animation-setEndValue(QRect(500, 450, 100, 30)); animation-start();
  • 12. Animation Framework (4/5) Fine Control setKeyValueAt (step, value) Creates a key frame at the given step with the given value. The given step must be in the range 0 to 1. QPropertyAnimation *animation = new QPropertyAnimation(Widget, geometry); animation-setDuration(10000); // 10 seconds animation.setKeyValueAt(0, QRect(250, 250, 100, 30)); animation.setKeyValueAt(0.25, QRect(250, 450, 100, 30)); animation.setKeyValueAt(0.5, QRect(500, 450, 100, 30)); animation.setKeyValueAt(0.75, QRect(500, 250, 100, 30)); animation.setKeyValueAt(1, QRect(250, 250, 100, 30)); animation-start();
  • 13. Animation Framework (5/5) Example AnimFmwk-BounceEasyCurve-ParalSequ Three buttons animating in sequential and parallel animations with easing curve AnimFmwk-SetKeyValue An animating button controlled by setKeyValueAt()
  • 14. Qt State Machine Framework (1/7) Classes – QStateMachine, QState, QFinalState, QSignalTransition For creating and executing state graphs. Provides an API and execution model that can be used to effectively embed the elements and semantics of statecharts in Qt applications. Qt's event system is used to drive the state machines. The animation framework also plugs into the new Qt state machine by allowing an animation to be played when transitions are triggered.
  • 15. Qt State Machine Framework (2/7) Components QStateMachine Manages a set of states and transitions Hierarchical Use the addState() function to add a top-level state(QState) to the state machine. Before the machine can be started, use setInitialState() method to set the initial state Call start() method to start the state machine The started() signal is emitted when the initial state is entered Call stop() to stop the state machine explicitly S1 S1-1 S1-2 S2
  • 16. Qt State Machine Framework (3/7) Components QState Represents a general-purpose state for QStateMachine Can have child states Can have transitions to other states Use addTransition(sender,signal,target-state) method to add a transition, this will return a QSignalTransition object Call addAnimation() of the returned QSignalTransition object and pass a QPropertyAnimation object to create a transition animation QFinalState Represents a final state Used to communicate that a QStateMachine has finished its work finished() signal will be emitted when entering the final state
  • 17. Qt State Machine Framework (4/7) Components QSignalTransition Provides a transition based on a Qt signal.
  • 18. Qt State Machine Framework (5/7)
  • 19. Qt State Machine Framework (6/7) Usage QPushButton button(StateMachine Button); button.show(); QStateMachine machine; QState *state1 = new QState(); state1-assignProperty(button, geometry, QRect(200, 200, 100, 100)); QState *state2 = new QState(); state2-assignProperty(button, geometry, QRect(450, 450, 100, 100)); QFinalState *state3 = new QFinalState(); QSignalTransition *transition1 = state1-addTransition(button, SIGNAL(clicked()), state2); transition1-addAnimation(new QPropertyAnimation(button, geometry)); state2-addTransition(button, SIGNAL(clicked()), state3); machine.addState(state1); machine.addState(state2); machine.addState(state3); QObject::connect(machine, SIGNAL(finished()),QApplication::instance(), SLOT(quit())); machine.setInitialState(state1); machine.start();
  • 20. Qt State Machine Framework (7/7) Example StateMachine-AnimButton A QPushButton moves and changes its states when it is pressed. When reaching final state, the application will quit.
  • 21. GraphicsView Framework (1/8) Introduced in Qt 4.2 Replaced its predecessor, QCanvas Item-based Provides A surface(scene) for managing and interacting with a large number of custom-made 2D graphical items A view widget for visualizing the items, with support for zooming and rotation. Items are varying geometric shapes(rectangle, line, circle, etc.)
  • 22. GraphicsView Framework (2/8) Scene(Canvas) Line item Text item Rectangle item View Vertical Scrollbar Thumb Horizontal Scrollbar Thumb Ellipse item The dash-line rectangle is the visible area to human
  • 23. GraphicsView Framework (3/8) Components The Scene - QGraphicsScene Serves as a container for QGraphicsItem objects Manages a large number of items Propagating events from QGraphicsView to each item Managing item state, such as item selection and focus.
  • 24. GraphicsView Framework (4/8) Components The View - QGraphicsView Provides the view widget To visualize the contents of a scene It is a scroll area Can attach several views to the same scene provide several viewports into the same data set. Receives input events from the keyboard and mouse, and translates these to scene events
  • 25. GraphicsView Framework (5/8) Components The Item – QGraphicsItem The base class for graphical items in a scene Detect mouse events Grab keyboard input focus Drag Drop Grouping Collision detection
  • 26. GraphicsView Framework (6/8) Comparison between GraphicsView framework and Clutter Clutter Stage GraphicsView Framework GraphicsScene The place where visual elements exist (canvas) Visual Element GraphicsItem Actor Represnetation Viewport GraphicsView Gtk_Clutter_Viewport
  • 27. GraphicsView Framework (7/8) Usage Create a QGraphicsScene object Add objects of QGraphicsItem to the QGraphicsScene object using addXXX() method, where “XXX” means the type of graphics item. Create a QGraphicsView object and set the created QGraphicsScene object with the method setScene() Finally, let QGraphicsView object be visible by calling show() method. Or add created QGraphicsView object to a QMainWindow object by calling setCentralWidget()
  • 28. GraphicsView Framework (8/8) Example GrphView-SimpleAnim Shows how scene/view/items work together and an animation that a rectangle graphic item moves and fades out.
  • 29. Example Source Codes Download The example codes for this slide (GitHub). https://github.com/wiliwe/qt-animation-example.git Using Git tool to download: git clone https://github.com/wiliwe/qt-animation-example.git
  • 30. References http://doc.qt.nokia.com/4.6/qtimer.html http://doc.qt.nokia.com/4.6/qtimeline.html http://doc.qt.nokia.com/4.6/qtimeline.html#CurveShape-enum http://doc.qt.nokia.com/4.6/animation-overview.html http://doc.qt.nokia.com/4.6/statemachine-api.html http://doc.qt.nokia.com/4.6/graphicsview.html http://doc.qt.nokia.com/4.6/qgraphicsscene.html http://doc.qt.nokia.com/4.6/qgraphicsitem.html