<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en_US" lang="en_US"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <!-- qgraphicstransform.cpp --> <title>Qt 4.8: QGraphicsTransform Class Reference</title> <link rel="stylesheet" type="text/css" href="style/style.css" /> <script src="scripts/jquery.js" type="text/javascript"></script> <script src="scripts/functions.js" type="text/javascript"></script> <link rel="stylesheet" type="text/css" href="style/superfish.css" /> <link rel="stylesheet" type="text/css" href="style/narrow.css" /> <!--[if IE]> <meta name="MSSmartTagsPreventParsing" content="true"> <meta http-equiv="imagetoolbar" content="no"> <![endif]--> <!--[if lt IE 7]> <link rel="stylesheet" type="text/css" href="style/style_ie6.css"> <![endif]--> <!--[if IE 7]> <link rel="stylesheet" type="text/css" href="style/style_ie7.css"> <![endif]--> <!--[if IE 8]> <link rel="stylesheet" type="text/css" href="style/style_ie8.css"> <![endif]--> <script src="scripts/superfish.js" type="text/javascript"></script> <script src="scripts/narrow.js" type="text/javascript"></script> </head> <body class="" onload="CheckEmptyAndLoadList();"> <div class="header" id="qtdocheader"> <div class="content"> <div id="nav-logo"> <a href="index.html">Home</a></div> <a href="index.html" class="qtref"><span>Qt Reference Documentation</span></a> <div id="narrowsearch"></div> <div id="nav-topright"> <ul> <li class="nav-topright-home"><a href="http://qt.digia.com/">Qt HOME</a></li> <li class="nav-topright-dev"><a href="http://qt-project.org/">DEV</a></li> <li class="nav-topright-doc nav-topright-doc-active"><a href="http://qt-project.org/doc/"> DOC</a></li> <li class="nav-topright-blog"><a href="http://blog.qt.digia.com/">BLOG</a></li> </ul> </div> <div id="shortCut"> <ul> <li class="shortCut-topleft-inactive"><span><a href="index.html">Qt 4.8</a></span></li> <li class="shortCut-topleft-active"><a href="http://qt-project.org/doc/">ALL VERSIONS </a></li> </ul> </div> <ul class="sf-menu" id="narrowmenu"> <li><a href="#">API Lookup</a> <ul> <li><a href="classes.html">Class index</a></li> <li><a href="functions.html">Function index</a></li> <li><a href="modules.html">Modules</a></li> <li><a href="namespaces.html">Namespaces</a></li> <li><a href="qtglobal.html">Global Declarations</a></li> <li><a href="qdeclarativeelements.html">QML elements</a></li> </ul> </li> <li><a href="#">Qt Topics</a> <ul> <li><a href="qt-basic-concepts.html">Programming with Qt</a></li> <li><a href="qtquick.html">Device UIs & Qt Quick</a></li> <li><a href="qt-gui-concepts.html">UI Design with Qt</a></li> <li><a href="supported-platforms.html">Supported Platforms</a></li> <li><a href="technology-apis.html">Qt and Key Technologies</a></li> <li><a href="best-practices.html">How-To's and Best Practices</a></li> </ul> </li> <li><a href="#">Examples</a> <ul> <li><a href="all-examples.html">Examples</a></li> <li><a href="tutorials.html">Tutorials</a></li> <li><a href="demos.html">Demos</a></li> <li><a href="qdeclarativeexamples.html">QML Examples</a></li> </ul> </li> </ul> </div> </div> <div class="wrapper"> <div class="hd"> <span></span> </div> <div class="bd group"> <div class="sidebar"> <div class="searchlabel"> Search index:</div> <div class="search" id="sidebarsearch"> <form id="qtdocsearch" action="" onsubmit="return false;"> <fieldset> <input type="text" name="searchstring" id="pageType" value="" /> <div id="resultdialog"> <a href="#" id="resultclose">Close</a> <p id="resultlinks" class="all"><a href="#" id="showallresults">All</a> | <a href="#" id="showapiresults">API</a> | <a href="#" id="showarticleresults">Articles</a> | <a href="#" id="showexampleresults">Examples</a></p> <p id="searchcount" class="all"><span id="resultcount"></span><span id="apicount"></span><span id="articlecount"></span><span id="examplecount"></span> results:</p> <ul id="resultlist" class="all"> </ul> </div> </fieldset> </form> </div> <div class="box first bottombar" id="lookup"> <h2 title="API Lookup"><span></span> API Lookup</h2> <div id="list001" class="list"> <ul id="ul001" > <li class="defaultLink"><a href="classes.html">Class index</a></li> <li class="defaultLink"><a href="functions.html">Function index</a></li> <li class="defaultLink"><a href="modules.html">Modules</a></li> <li class="defaultLink"><a href="namespaces.html">Namespaces</a></li> <li class="defaultLink"><a href="qtglobal.html">Global Declarations</a></li> <li class="defaultLink"><a href="qdeclarativeelements.html">QML elements</a></li> </ul> </div> </div> <div class="box bottombar" id="topics"> <h2 title="Qt Topics"><span></span> Qt Topics</h2> <div id="list002" class="list"> <ul id="ul002" > <li class="defaultLink"><a href="qt-basic-concepts.html">Programming with Qt</a></li> <li class="defaultLink"><a href="qtquick.html">Device UIs & Qt Quick</a></li> <li class="defaultLink"><a href="qt-gui-concepts.html">UI Design with Qt</a></li> <li class="defaultLink"><a href="supported-platforms.html">Supported Platforms</a></li> <li class="defaultLink"><a href="technology-apis.html">Qt and Key Technologies</a></li> <li class="defaultLink"><a href="best-practices.html">How-To's and Best Practices</a></li> </ul> </div> </div> <div class="box" id="examples"> <h2 title="Examples"><span></span> Examples</h2> <div id="list003" class="list"> <ul id="ul003"> <li class="defaultLink"><a href="all-examples.html">Examples</a></li> <li class="defaultLink"><a href="tutorials.html">Tutorials</a></li> <li class="defaultLink"><a href="demos.html">Demos</a></li> <li class="defaultLink"><a href="qdeclarativeexamples.html">QML Examples</a></li> </ul> </div> </div> </div> <div class="wrap"> <div class="toolbar"> <div class="breadcrumb toolblock"> <ul> <li class="first"><a href="index.html">Home</a></li> <!-- Breadcrumbs go here --> <li><a href="modules.html">Modules</a></li> <li><a href="qtgui.html">QtGui</a></li> <li>QGraphicsTransform</li> </ul> </div> <div class="toolbuttons toolblock"> <ul> <li id="smallA" class="t_button">A</li> <li id="medA" class="t_button active">A</li> <li id="bigA" class="t_button">A</li> <li id="print" class="t_button"><a href="javascript:this.print();"> <span>Print</span></a></li> </ul> </div> </div> <div class="content mainContent"> <div class="toc"> <h3><a name="toc">Contents</a></h3> <ul> <li class="level1"><a href="#public-functions">Public Functions</a></li> <li class="level1"><a href="#protected-slots">Protected Slots</a></li> <li class="level1"><a href="#details">Detailed Description</a></li> </ul> </div> <h1 class="title">QGraphicsTransform Class Reference</h1> <!-- $$$QGraphicsTransform-brief --> <p>The QGraphicsTransform class is an abstract base class for building advanced transformations on QGraphicsItems. <a href="#details">More...</a></p> <!-- @@@QGraphicsTransform --> <pre class="cpp"> <span class="preprocessor">#include <QGraphicsTransform></span></pre><p><b>Inherits: </b><a href="qobject.html">QObject</a>.</p> <p><b>Inherited by: </b><a href="qgraphicsrotation.html">QGraphicsRotation</a> and <a href="qgraphicsscale.html">QGraphicsScale</a>.</p> <p>This class was introduced in Qt 4.6.</p> <ul> <li><a href="qgraphicstransform-members.html">List of all members, including inherited members</a></li> </ul> <a name="public-functions"></a> <h2>Public Functions</h2> <table class="alignedsummary"> <tr><td class="memItemLeft rightAlign topAlign"> </td><td class="memItemRight bottomAlign"><b><a href="qgraphicstransform.html#QGraphicsTransform">QGraphicsTransform</a></b> ( QObject * <i>parent</i> = 0 )</td></tr> <tr><td class="memItemLeft rightAlign topAlign"> </td><td class="memItemRight bottomAlign"><b><a href="qgraphicstransform.html#dtor.QGraphicsTransform">~QGraphicsTransform</a></b> ()</td></tr> <tr><td class="memItemLeft rightAlign topAlign"> virtual void </td><td class="memItemRight bottomAlign"><b><a href="qgraphicstransform.html#applyTo">applyTo</a></b> ( QMatrix4x4 * <i>matrix</i> ) const = 0</td></tr> </table> <ul> <li class="fn">29 public functions inherited from <a href="qobject.html#public-functions">QObject</a></li> </ul> <a name="protected-slots"></a> <h2>Protected Slots</h2> <table class="alignedsummary"> <tr><td class="memItemLeft rightAlign topAlign"> void </td><td class="memItemRight bottomAlign"><b><a href="qgraphicstransform.html#update">update</a></b> ()</td></tr> </table> <h3>Additional Inherited Members</h3> <ul> <li class="fn">1 property inherited from <a href="qobject.html#properties">QObject</a></li> <li class="fn">1 public slot inherited from <a href="qobject.html#public-slots">QObject</a></li> <li class="fn">1 signal inherited from <a href="qobject.html#signals">QObject</a></li> <li class="fn">7 static public members inherited from <a href="qobject.html#static-public-members">QObject</a></li> <li class="fn">8 protected functions inherited from <a href="qobject.html#protected-functions">QObject</a></li> </ul> <a name="details"></a> <!-- $$$QGraphicsTransform-description --> <div class="descr"> <h2>Detailed Description</h2> <p>The QGraphicsTransform class is an abstract base class for building advanced transformations on QGraphicsItems.</p> <p>As an alternative to QGraphicsItem::transform, QGraphicsTransform lets you create and control advanced transformations that can be configured independently using specialized properties.</p> <p><a href="qgraphicsitem.html">QGraphicsItem</a> allows you to assign any number of QGraphicsTransform instances to one <a href="qgraphicsitem.html">QGraphicsItem</a>. Each QGraphicsTransform is applied in order, one at a time, to the <a href="qgraphicsitem.html">QGraphicsItem</a> it's assigned to.</p> <p>QGraphicsTransform is particularly useful for animations. Whereas <a href="qgraphicsitem.html#setTransform">QGraphicsItem::setTransform</a>() lets you assign any transform directly to an item, there is no direct way to interpolate between two different transformations (e.g., when transitioning between two states, each for which the item has a different arbitrary transform assigned). Using QGraphicsTransform you can interpolate the property values of each independent transformation. The resulting operation is then combined into a single transform which is applied to <a href="qgraphicsitem.html">QGraphicsItem</a>.</p> <p>Transformations are computed in true 3D space using <a href="qmatrix4x4.html">QMatrix4x4</a>. When the transformation is applied to a <a href="qgraphicsitem.html">QGraphicsItem</a>, it will be projected back to a 2D <a href="qtransform.html">QTransform</a>. When multiple QGraphicsTransform objects are applied to a <a href="qgraphicsitem.html">QGraphicsItem</a>, all of the transformations are computed in true 3D space, with the projection back to 2D only occurring after the last QGraphicsTransform is applied. The exception to this is <a href="qgraphicsrotation.html">QGraphicsRotation</a>, which projects back to 2D after each rotation to preserve the perspective effect around the X and Y axes.</p> <p>If you want to create your own configurable transformation, you can create a subclass of QGraphicsTransform (or any or the existing subclasses), and reimplement the pure virtual <a href="qgraphicstransform.html#applyTo">applyTo</a>() function, which takes a pointer to a <a href="qmatrix4x4.html">QMatrix4x4</a>. Each operation you would like to apply should be exposed as properties (e.g., customTransform->setVerticalShear(2.5)). Inside you reimplementation of <a href="qgraphicstransform.html#applyTo">applyTo</a>(), you can modify the provided transform respectively.</p> <p>QGraphicsTransform can be used together with <a href="qgraphicsitem.html#setTransform">QGraphicsItem::setTransform</a>(), <a href="qgraphicsitem.html#setRotation">QGraphicsItem::setRotation</a>(), and <a href="qgraphicsitem.html#setScale">QGraphicsItem::setScale</a>().</p> </div> <p><b>See also </b><a href="qgraphicsitem.html#transform">QGraphicsItem::transform</a>(), <a href="qgraphicsscale.html">QGraphicsScale</a>, and <a href="qgraphicsrotation.html">QGraphicsRotation</a>.</p> <!-- @@@QGraphicsTransform --> <div class="func"> <h2>Member Function Documentation</h2> <!-- $$$QGraphicsTransform[overload1]$$$QGraphicsTransformQObject* --> <h3 class="fn"><a name="QGraphicsTransform"></a>QGraphicsTransform::<span class="name">QGraphicsTransform</span> ( <span class="type"><a href="qobject.html">QObject</a></span> * <i>parent</i> = 0 )</h3> <p>Constructs a new <a href="qgraphicstransform.html">QGraphicsTransform</a> with the given <i>parent</i>.</p> <!-- @@@QGraphicsTransform --> <!-- $$$~QGraphicsTransform[overload1]$$$~QGraphicsTransform --> <h3 class="fn"><a name="dtor.QGraphicsTransform"></a>QGraphicsTransform::<span class="name">~QGraphicsTransform</span> ()</h3> <p>Destroys the graphics transform.</p> <!-- @@@~QGraphicsTransform --> <!-- $$$applyTo[overload1]$$$applyToQMatrix4x4* --> <h3 class="fn"><a name="applyTo"></a><span class="type">void</span> QGraphicsTransform::<span class="name">applyTo</span> ( <span class="type"><a href="qmatrix4x4.html">QMatrix4x4</a></span> * <i>matrix</i> ) const<tt> [pure virtual]</tt></h3> <p>This pure virtual method has to be reimplemented in derived classes.</p> <p>It applies this transformation to <i>matrix</i>.</p> <p><b>See also </b><a href="qgraphicsitem.html#transform">QGraphicsItem::transform</a>() and <a href="qmatrix4x4.html#toTransform">QMatrix4x4::toTransform</a>().</p> <!-- @@@applyTo --> <!-- $$$update[overload1]$$$update --> <h3 class="fn"><a name="update"></a><span class="type">void</span> QGraphicsTransform::<span class="name">update</span> ()<tt> [protected slot]</tt></h3> <p>Notifies that this transform operation has changed its parameters in such a way that <a href="qgraphicstransform.html#applyTo">applyTo</a>() will return a different result than before.</p> <p>When implementing you own custom graphics transform, you must call this function every time you change a parameter, to let <a href="qgraphicsitem.html">QGraphicsItem</a> know that its transformation needs to be updated.</p> <p><b>See also </b><a href="qgraphicstransform.html#applyTo">applyTo</a>().</p> <!-- @@@update --> </div> </div> </div> </div> <div class="ft"> <span></span> </div> </div> <div class="footer"> <p> <acronym title="Copyright">©</acronym> 2015 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners.</p> <br /> <p> The documentation provided herein is licensed under the terms of the <a href="http://www.gnu.org/licenses/fdl.html">GNU Free Documentation License version 1.3</a> as published by the Free Software Foundation.</p> <p> Documentation sources may be obtained from <a href="http://www.qt-project.org"> www.qt-project.org</a>.</p> <br /> <p> Qt and respective logos are trademarks of The Qt Company Ltd in Finland and/or other countries worldwide. All other trademarks are property of their respective owners. <a title="Privacy Policy" href="http://en.gitorious.org/privacy_policy/">Privacy Policy</a></p> </div> <script src="scripts/functions.js" type="text/javascript"></script> </body> </html>