A<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://www.cppe.ru/index.php?action=history&amp;feed=atom&amp;title=C%2B%2B%2FQt%2FQGraphicsItem</id>
		<title>C++/Qt/QGraphicsItem - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://www.cppe.ru/index.php?action=history&amp;feed=atom&amp;title=C%2B%2B%2FQt%2FQGraphicsItem"/>
		<link rel="alternate" type="text/html" href="http://www.cppe.ru/index.php?title=C%2B%2B/Qt/QGraphicsItem&amp;action=history"/>
		<updated>2026-04-18T22:22:04Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.cppe.ru/index.php?title=C%2B%2B/Qt/QGraphicsItem&amp;diff=1170&amp;oldid=prev</id>
		<title> в 14:21, 25 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://www.cppe.ru/index.php?title=C%2B%2B/Qt/QGraphicsItem&amp;diff=1170&amp;oldid=prev"/>
				<updated>2010-05-25T14:21:06Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 14:21, 25 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
			</entry>

	<entry>
		<id>http://www.cppe.ru/index.php?title=C%2B%2B/Qt/QGraphicsItem&amp;diff=1171&amp;oldid=prev</id>
		<title>Admin: 1 версия:&amp;#32;Импорт контента...</title>
		<link rel="alternate" type="text/html" href="http://www.cppe.ru/index.php?title=C%2B%2B/Qt/QGraphicsItem&amp;diff=1171&amp;oldid=prev"/>
				<updated>2010-05-25T10:25:01Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия: Импорт контента...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Interact with QGraphicsItem==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
Foundations of Qt Development\Chapter07\graphicsview\interaction\handleitem.cpp&lt;br /&gt;
/*&lt;br /&gt;
 * Copyright (c) 2006-2007, Johan Thelin&lt;br /&gt;
 * &lt;br /&gt;
 * All rights reserved.&lt;br /&gt;
 * &lt;br /&gt;
 * Redistribution and use in source and binary forms, with or without modification, &lt;br /&gt;
 * are permitted provided that the following conditions are met:&lt;br /&gt;
 * &lt;br /&gt;
 *     * Redistributions of source code must retain the above copyright notice, &lt;br /&gt;
 *       this list of conditions and the following disclaimer.&lt;br /&gt;
 *     * Redistributions in binary form must reproduce the above copyright notice,  &lt;br /&gt;
 *       this list of conditions and the following disclaimer in the documentation &lt;br /&gt;
 *       and/or other materials provided with the distribution.&lt;br /&gt;
 *     * Neither the name of APress nor the names of its contributors &lt;br /&gt;
 *       may be used to endorse or promote products derived from this software &lt;br /&gt;
 *       without specific prior written permission.&lt;br /&gt;
 * &lt;br /&gt;
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS&lt;br /&gt;
 * &amp;quot;AS IS&amp;quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT&lt;br /&gt;
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR&lt;br /&gt;
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR&lt;br /&gt;
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,&lt;br /&gt;
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,&lt;br /&gt;
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR&lt;br /&gt;
 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF&lt;br /&gt;
 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING&lt;br /&gt;
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS&lt;br /&gt;
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
#include &amp;quot;handleitem.h&amp;quot;&lt;br /&gt;
#include &amp;lt;QPainter&amp;gt;&lt;br /&gt;
#include &amp;lt;QPointF&amp;gt;&lt;br /&gt;
HandleItem::HandleItem( QGraphicsItem *item, QGraphicsScene *scene, QColor color, HandleItem::HandleRole role, QList&amp;lt;HandleItem*&amp;gt; handles ) : QGraphicsItem( 0, scene )&lt;br /&gt;
{&lt;br /&gt;
  m_role = role;&lt;br /&gt;
  m_color = color;&lt;br /&gt;
  &lt;br /&gt;
  m_item = item;&lt;br /&gt;
  m_handles = handles;&lt;br /&gt;
  &lt;br /&gt;
  m_pressed = false;&lt;br /&gt;
  setZValue( 100 );&lt;br /&gt;
  setFlag( ItemIsMovable );&lt;br /&gt;
}&lt;br /&gt;
void HandleItem::paint( QPainter *paint, const QStyleOptionGraphicsItem *option, QWidget *widget )&lt;br /&gt;
{&lt;br /&gt;
  paint-&amp;gt;setPen( m_color );&lt;br /&gt;
  paint-&amp;gt;setBrush( m_color );&lt;br /&gt;
    &lt;br /&gt;
  QRectF rect = boundingRect();&lt;br /&gt;
  QVector&amp;lt;QPointF&amp;gt; points;&lt;br /&gt;
    &lt;br /&gt;
  switch( m_role )&lt;br /&gt;
  {&lt;br /&gt;
  case CenterHandle:&lt;br /&gt;
    paint-&amp;gt;drawEllipse( rect );&lt;br /&gt;
    break;&lt;br /&gt;
  case RightHandle:&lt;br /&gt;
    points &amp;lt;&amp;lt; rect.center()+QPointF(3,0) &amp;lt;&amp;lt; rect.center()+QPointF(-3,-5) &amp;lt;&amp;lt; rect.center()+QPointF(-3,5);&lt;br /&gt;
    paint-&amp;gt;drawConvexPolygon( QPolygonF(points) );&lt;br /&gt;
    break;&lt;br /&gt;
  case TopHandle:&lt;br /&gt;
    points &amp;lt;&amp;lt; rect.center()+QPointF(0,-3) &amp;lt;&amp;lt; rect.center()+QPointF(-5,3) &amp;lt;&amp;lt; rect.center()+QPointF(5,3);&lt;br /&gt;
    paint-&amp;gt;drawConvexPolygon( QPolygonF(points) );&lt;br /&gt;
    break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
QRectF HandleItem::boundingRect() const&lt;br /&gt;
{&lt;br /&gt;
  QPointF point = m_item-&amp;gt;boundingRect().center();&lt;br /&gt;
  switch( m_role )&lt;br /&gt;
  {&lt;br /&gt;
  case CenterHandle:&lt;br /&gt;
    return QRectF( point-QPointF(5, 5), QSize( 10, 10 ) );&lt;br /&gt;
  case RightHandle:&lt;br /&gt;
    point.setX( m_item-&amp;gt;boundingRect().right() );&lt;br /&gt;
    return QRectF( point-QPointF(3, 5), QSize( 6, 10 ) );&lt;br /&gt;
  case TopHandle:&lt;br /&gt;
    point.setY( m_item-&amp;gt;boundingRect().top() );&lt;br /&gt;
    return QRectF( point-QPointF(5, 3), QSize( 10, 6 ) );&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  return QRectF();&lt;br /&gt;
}&lt;br /&gt;
QVariant HandleItem::itemChange( GraphicsItemChange change, const QVariant &amp;amp;data )&lt;br /&gt;
{&lt;br /&gt;
  if( change == ItemPositionChange &amp;amp;&amp;amp; m_pressed )&lt;br /&gt;
  {&lt;br /&gt;
    QPointF movement = data.toPoint() - pos();&lt;br /&gt;
    QPointF center = m_item-&amp;gt;boundingRect().center();&lt;br /&gt;
    &lt;br /&gt;
    switch( m_role )&lt;br /&gt;
    {&lt;br /&gt;
    case CenterHandle:&lt;br /&gt;
      m_item-&amp;gt;moveBy( movement.x(), movement.y() );&lt;br /&gt;
      &lt;br /&gt;
      foreach( HandleItem *handle, m_handles )&lt;br /&gt;
        handle-&amp;gt;translate( movement.x(), movement.y() );&lt;br /&gt;
      break;&lt;br /&gt;
    case RightHandle:&lt;br /&gt;
      if( 2*movement.x() + m_item-&amp;gt;sceneBoundingRect().width() &amp;lt;= 5 )&lt;br /&gt;
        return QGraphicsItem::itemChange( change, pos() );&lt;br /&gt;
    &lt;br /&gt;
      movement.setY( 0 );&lt;br /&gt;
      &lt;br /&gt;
      m_item-&amp;gt;translate( center.x(), center.y() );      &lt;br /&gt;
      m_item-&amp;gt;scale( 1.0+2.0*movement.x()/(m_item-&amp;gt;sceneBoundingRect().width()), 1 );&lt;br /&gt;
      m_item-&amp;gt;translate( -center.x(), -center.y() );&lt;br /&gt;
        &lt;br /&gt;
      break;&lt;br /&gt;
    case TopHandle:&lt;br /&gt;
      if( -2*movement.y() + m_item-&amp;gt;sceneBoundingRect().height() &amp;lt;= 5 )&lt;br /&gt;
        return QGraphicsItem::itemChange( change, pos() );&lt;br /&gt;
    &lt;br /&gt;
      movement.setX( 0 );&lt;br /&gt;
      &lt;br /&gt;
      m_item-&amp;gt;translate( center.x(), center.y() );&lt;br /&gt;
      m_item-&amp;gt;scale( 1, 1.0-2.0*movement.y()/(m_item-&amp;gt;sceneBoundingRect().height()) );&lt;br /&gt;
      m_item-&amp;gt;translate( -center.x(), -center.y() );&lt;br /&gt;
      break;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    return QGraphicsItem::itemChange( change, pos()+movement );&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  return QGraphicsItem::itemChange( change, data );&lt;br /&gt;
}&lt;br /&gt;
void HandleItem::mousePressEvent( QGraphicsSceneMouseEvent *event )&lt;br /&gt;
{&lt;br /&gt;
  m_pressed = true;  &lt;br /&gt;
  QGraphicsItem::mousePressEvent( event );&lt;br /&gt;
}&lt;br /&gt;
void HandleItem::mouseReleaseEvent( QGraphicsSceneMouseEvent *event )&lt;br /&gt;
{&lt;br /&gt;
  m_pressed = false;&lt;br /&gt;
  QGraphicsItem::mouseReleaseEvent( event );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
Foundations of Qt Development\Chapter07\graphicsview\interaction\handleitem.h&lt;br /&gt;
/*&lt;br /&gt;
 * Copyright (c) 2006-2007, Johan Thelin&lt;br /&gt;
 * &lt;br /&gt;
 * All rights reserved.&lt;br /&gt;
 * &lt;br /&gt;
 * Redistribution and use in source and binary forms, with or without modification, &lt;br /&gt;
 * are permitted provided that the following conditions are met:&lt;br /&gt;
 * &lt;br /&gt;
 *     * Redistributions of source code must retain the above copyright notice, &lt;br /&gt;
 *       this list of conditions and the following disclaimer.&lt;br /&gt;
 *     * Redistributions in binary form must reproduce the above copyright notice,  &lt;br /&gt;
 *       this list of conditions and the following disclaimer in the documentation &lt;br /&gt;
 *       and/or other materials provided with the distribution.&lt;br /&gt;
 *     * Neither the name of APress nor the names of its contributors &lt;br /&gt;
 *       may be used to endorse or promote products derived from this software &lt;br /&gt;
 *       without specific prior written permission.&lt;br /&gt;
 * &lt;br /&gt;
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS&lt;br /&gt;
 * &amp;quot;AS IS&amp;quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT&lt;br /&gt;
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR&lt;br /&gt;
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR&lt;br /&gt;
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,&lt;br /&gt;
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,&lt;br /&gt;
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR&lt;br /&gt;
 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF&lt;br /&gt;
 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING&lt;br /&gt;
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS&lt;br /&gt;
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
#ifndef HANDLEITEM_H&lt;br /&gt;
#define HANDLEITEM_H&lt;br /&gt;
#include &amp;lt;QGraphicsItem&amp;gt;&lt;br /&gt;
class HandleItem;&lt;br /&gt;
class HandleItem : public QGraphicsItem&lt;br /&gt;
{&lt;br /&gt;
public:&lt;br /&gt;
  enum HandleRole&lt;br /&gt;
  {&lt;br /&gt;
    CenterHandle,&lt;br /&gt;
    RightHandle,&lt;br /&gt;
    TopHandle&lt;br /&gt;
  };&lt;br /&gt;
  &lt;br /&gt;
  HandleItem( QGraphicsItem *item, QGraphicsScene *scene, QColor color, HandleRole role = CenterHandle, QList&amp;lt;HandleItem*&amp;gt; handles = QList&amp;lt;HandleItem*&amp;gt;() );&lt;br /&gt;
  &lt;br /&gt;
  void paint( QPainter *paint, const QStyleOptionGraphicsItem *option, QWidget *widget );&lt;br /&gt;
  QRectF boundingRect() const;&lt;br /&gt;
protected:&lt;br /&gt;
  void mousePressEvent( QGraphicsSceneMouseEvent *event );&lt;br /&gt;
  void mouseReleaseEvent( QGraphicsSceneMouseEvent *event );&lt;br /&gt;
  &lt;br /&gt;
  QVariant itemChange( GraphicsItemChange change, const QVariant &amp;amp;data );&lt;br /&gt;
private:&lt;br /&gt;
  QGraphicsItem *m_item;&lt;br /&gt;
  &lt;br /&gt;
  HandleRole m_role;&lt;br /&gt;
  QColor m_color;&lt;br /&gt;
  &lt;br /&gt;
  QList&amp;lt;HandleItem*&amp;gt; m_handles;&lt;br /&gt;
  bool m_pressed;&lt;br /&gt;
};&lt;br /&gt;
#endif // HANDLEITEM_H&lt;br /&gt;
&lt;br /&gt;
Foundations of Qt Development\Chapter07\graphicsview\interaction\main.cpp&lt;br /&gt;
/*&lt;br /&gt;
 * Copyright (c) 2006-2007, Johan Thelin&lt;br /&gt;
 * &lt;br /&gt;
 * All rights reserved.&lt;br /&gt;
 * &lt;br /&gt;
 * Redistribution and use in source and binary forms, with or without modification, &lt;br /&gt;
 * are permitted provided that the following conditions are met:&lt;br /&gt;
 * &lt;br /&gt;
 *     * Redistributions of source code must retain the above copyright notice, &lt;br /&gt;
 *       this list of conditions and the following disclaimer.&lt;br /&gt;
 *     * Redistributions in binary form must reproduce the above copyright notice,  &lt;br /&gt;
 *       this list of conditions and the following disclaimer in the documentation &lt;br /&gt;
 *       and/or other materials provided with the distribution.&lt;br /&gt;
 *     * Neither the name of APress nor the names of its contributors &lt;br /&gt;
 *       may be used to endorse or promote products derived from this software &lt;br /&gt;
 *       without specific prior written permission.&lt;br /&gt;
 * &lt;br /&gt;
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS&lt;br /&gt;
 * &amp;quot;AS IS&amp;quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT&lt;br /&gt;
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR&lt;br /&gt;
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR&lt;br /&gt;
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,&lt;br /&gt;
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,&lt;br /&gt;
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR&lt;br /&gt;
 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF&lt;br /&gt;
 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING&lt;br /&gt;
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS&lt;br /&gt;
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
#include &amp;lt;QApplication&amp;gt;&lt;br /&gt;
#include &amp;lt;QGraphicsScene&amp;gt;&lt;br /&gt;
#include &amp;lt;QGraphicsView&amp;gt;&lt;br /&gt;
#include &amp;lt;QGraphicsRectItem&amp;gt;&lt;br /&gt;
#include &amp;lt;QGraphicsEllipseItem&amp;gt;&lt;br /&gt;
#include &amp;quot;handleitem.h&amp;quot;&lt;br /&gt;
int main( int argc, char **argv )&lt;br /&gt;
{&lt;br /&gt;
  QApplication app( argc, argv );&lt;br /&gt;
  &lt;br /&gt;
  QGraphicsScene scene( 0, 0, 200, 200 );&lt;br /&gt;
  &lt;br /&gt;
  QGraphicsRectItem *rectItem = new QGraphicsRectItem( QRect( 10, 10, 50, 100 ), 0, &amp;amp;scene );&lt;br /&gt;
  QGraphicsEllipseItem *elItem = new QGraphicsEllipseItem( QRect( 80, 40, 100, 80 ), 0, &amp;amp;scene );&lt;br /&gt;
  &lt;br /&gt;
  HandleItem *trh = new HandleItem( rectItem, &amp;amp;scene, Qt::red, HandleItem::TopHandle );&lt;br /&gt;
  HandleItem *rrh = new HandleItem( rectItem, &amp;amp;scene, Qt::red, HandleItem::RightHandle );&lt;br /&gt;
  HandleItem *crh = new HandleItem( rectItem, &amp;amp;scene, Qt::red, HandleItem::CenterHandle, QList&amp;lt;HandleItem*&amp;gt;() &amp;lt;&amp;lt; trh &amp;lt;&amp;lt; rrh );&lt;br /&gt;
  &lt;br /&gt;
  HandleItem *teh = new HandleItem( elItem, &amp;amp;scene, Qt::green, HandleItem::TopHandle );&lt;br /&gt;
  HandleItem *reh = new HandleItem( elItem, &amp;amp;scene, Qt::green, HandleItem::RightHandle );&lt;br /&gt;
  HandleItem *ceh = new HandleItem( elItem, &amp;amp;scene, Qt::green, HandleItem::CenterHandle, QList&amp;lt;HandleItem*&amp;gt;() &amp;lt;&amp;lt; teh &amp;lt;&amp;lt; reh );&lt;br /&gt;
  QGraphicsView view;&lt;br /&gt;
  view.setScene( &amp;amp;scene );&lt;br /&gt;
  view.show();&lt;br /&gt;
  &lt;br /&gt;
  int res = app.exec();&lt;br /&gt;
  &lt;br /&gt;
  delete crh;&lt;br /&gt;
  delete trh;&lt;br /&gt;
  delete rrh;&lt;br /&gt;
    &lt;br /&gt;
  delete ceh;&lt;br /&gt;
  delete teh;&lt;br /&gt;
  delete reh;&lt;br /&gt;
  &lt;br /&gt;
  return res;&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Translate and scale QGraphicsItem==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
Foundations of Qt Development\Chapter07\graphicsview\transformations\main.cpp&lt;br /&gt;
/*&lt;br /&gt;
 * Copyright (c) 2006-2007, Johan Thelin&lt;br /&gt;
 * &lt;br /&gt;
 * All rights reserved.&lt;br /&gt;
 * &lt;br /&gt;
 * Redistribution and use in source and binary forms, with or without modification, &lt;br /&gt;
 * are permitted provided that the following conditions are met:&lt;br /&gt;
 * &lt;br /&gt;
 *     * Redistributions of source code must retain the above copyright notice, &lt;br /&gt;
 *       this list of conditions and the following disclaimer.&lt;br /&gt;
 *     * Redistributions in binary form must reproduce the above copyright notice,  &lt;br /&gt;
 *       this list of conditions and the following disclaimer in the documentation &lt;br /&gt;
 *       and/or other materials provided with the distribution.&lt;br /&gt;
 *     * Neither the name of APress nor the names of its contributors &lt;br /&gt;
 *       may be used to endorse or promote products derived from this software &lt;br /&gt;
 *       without specific prior written permission.&lt;br /&gt;
 * &lt;br /&gt;
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS&lt;br /&gt;
 * &amp;quot;AS IS&amp;quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT&lt;br /&gt;
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR&lt;br /&gt;
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR&lt;br /&gt;
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,&lt;br /&gt;
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,&lt;br /&gt;
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR&lt;br /&gt;
 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF&lt;br /&gt;
 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING&lt;br /&gt;
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS&lt;br /&gt;
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
#include &amp;lt;QApplication&amp;gt;&lt;br /&gt;
#include &amp;lt;QGraphicsScene&amp;gt;&lt;br /&gt;
#include &amp;lt;QGraphicsView&amp;gt;&lt;br /&gt;
#include &amp;lt;QGraphicsRectItem&amp;gt;&lt;br /&gt;
QGraphicsItem *createItem( int x, QGraphicsScene *scene )&lt;br /&gt;
{&lt;br /&gt;
  QGraphicsRectItem *rectItem = new QGraphicsRectItem( QRect( x+40, 40, 120, 120 ), 0, scene );&lt;br /&gt;
  rectItem-&amp;gt;setPen( QPen(Qt::black) );&lt;br /&gt;
  rectItem-&amp;gt;setBrush( Qt::gray );&lt;br /&gt;
    &lt;br /&gt;
  QGraphicsRectItem *innerRectItem = new QGraphicsRectItem( QRect( x+50, 50, 45, 100 ), rectItem, scene );&lt;br /&gt;
  innerRectItem-&amp;gt;setPen( QPen(Qt::black) );&lt;br /&gt;
  innerRectItem-&amp;gt;setBrush( Qt::white );&lt;br /&gt;
  &lt;br /&gt;
  QGraphicsEllipseItem *ellipseItem = new QGraphicsEllipseItem( QRect( x+105, 50, 45, 100 ), rectItem, scene );&lt;br /&gt;
  ellipseItem-&amp;gt;setPen( QPen(Qt::black) );&lt;br /&gt;
  ellipseItem-&amp;gt;setBrush( Qt::white );&lt;br /&gt;
  return rectItem;&lt;br /&gt;
}&lt;br /&gt;
int main( int argc, char **argv )&lt;br /&gt;
{&lt;br /&gt;
  QApplication app( argc, argv );&lt;br /&gt;
  &lt;br /&gt;
  QGraphicsScene scene( QRect( 0, 00, 1000, 200 ) );&lt;br /&gt;
  &lt;br /&gt;
  QGraphicsItem *item1 = createItem( 0, &amp;amp;scene );&lt;br /&gt;
  &lt;br /&gt;
  QGraphicsItem *item2 = createItem( 200, &amp;amp;scene );&lt;br /&gt;
  item2-&amp;gt;translate( 300, 100 );&lt;br /&gt;
  item2-&amp;gt;rotate( 30 );&lt;br /&gt;
  item2-&amp;gt;translate( -300, -100 );&lt;br /&gt;
  &lt;br /&gt;
  QGraphicsItem *item3 = createItem( 400, &amp;amp;scene );&lt;br /&gt;
  item3-&amp;gt;translate( 500, 100 );&lt;br /&gt;
  item3-&amp;gt;scale( 0.5, 0.7 );&lt;br /&gt;
  item3-&amp;gt;translate( -500, -100 );&lt;br /&gt;
  &lt;br /&gt;
  QGraphicsItem *item4 = createItem( 600, &amp;amp;scene );&lt;br /&gt;
  item4-&amp;gt;translate( 700, 100 );&lt;br /&gt;
  item4-&amp;gt;shear( 0.1, 0.3 );&lt;br /&gt;
  item4-&amp;gt;translate( -700, -100 );&lt;br /&gt;
  &lt;br /&gt;
  QGraphicsItem *item5 = createItem( 800, &amp;amp;scene );&lt;br /&gt;
  item5-&amp;gt;translate( 900, 100 );&lt;br /&gt;
  item5-&amp;gt;scale( 0.5, 0.7 );&lt;br /&gt;
  item5-&amp;gt;rotate( 30 );&lt;br /&gt;
  item5-&amp;gt;shear( 0.1, 0.3 );&lt;br /&gt;
  item5-&amp;gt;translate( -900, -100 );&lt;br /&gt;
  &lt;br /&gt;
  QGraphicsView view;&lt;br /&gt;
  view.setScene( &amp;amp;scene );&lt;br /&gt;
  view.show();&lt;br /&gt;
  &lt;br /&gt;
  return app.exec();&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>