рдЕрдкрдиреА рдпрд╛рддреНрд░рд╛
рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж , рд╣рдо рд░реБрдХрддреЗ рдирд╣реАрдВ рд╣реИрдВ рдФрд░ рдкреНрд░рд▓реЗрдЦрди рдХреЗ рдЕрдВрдзреЗрд░реЗ рдкрдХреНрд╖реЛрдВ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВред рдХрд╣реАрдВ рд╡реЗ рдкреВрд░реЗ рдХреНрдпреВрдЯреА рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХрд╣реАрдВ рди рдХрд╣реАрдВ рдХреЗрд╡рд▓ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рджреГрд╢реНрдп рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╣реИред рд▓реЗрдХрд┐рди рдПрдХ рд░рд╛рд╕реНрддрд╛ рдпрд╛ рджреВрд╕рд░рд╛, рдЙрдирдХреЗ рд╕рд╛рде рдПрдХ рдмреИрдардХ рд╣рдореЗрд╢рд╛ рджрд░реНрдж рд░рд╣рд┐рдд рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред
рдХреЗрд╕ рдирдВрдмрд░ 3
рд╣рдо рдЕрдкрдирд╛ рдЖрдЗрдЯрдо рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рд▓рд┐рдЦрддреЗ рд╣реИрдВ
MainWindow.hclass MainWindow : public QWidget { Q_OBJECT public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); private: QGraphicsScene *m_scene; QGraphicsRectItem *m_rect; QGraphicsItem *m_cross; QGraphicsView * graphicsView; };
MainWindow.cpp class CrossItem: public QGraphicsItem { public: QRectF boundingRect() const { return QRectF(0, 0, 30*scale(), 30*scale()); } void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) { Q_UNUSED(option) Q_UNUSED(widget); painter->setPen(QColor(Qt::red)); painter->drawLine(10, 0, 20, 0); painter->drawLine(20*scale(), 0*scale(), 20*scale(), 10*scale()); painter->drawLine(20, 10, 30, 10); painter->drawLine(30, 10, 30, 20); painter->drawLine(30, 20, 20, 20); painter->drawLine(20, 20, 20, 30); painter->drawLine(20, 30, 10, 30); painter->drawLine(10, 30, 10, 20); painter->drawLine(10, 20, 0, 20); painter->drawLine( 0, 20, 0, 10); painter->drawLine( 0, 10, 10, 10); painter->drawLine(10, 10, 10, 0); } }; MainWindow::MainWindow(QWidget *parent) : QWidget(parent) { setLayout(new QGridLayout()); graphicsView = new QGraphicsView(); layout()->addWidget(graphicsView); graphicsView->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); graphicsView->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); m_scene = new QGraphicsScene(); m_cross = new CrossItem(); m_scene->addItem(m_cross);
рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдВ, рдЪрд▓рд╛рдПрдБ, рдХреНрд░реЙрд╕ рдореЗрдВ рдЕрдВрдХрд┐рдд рд╡рд░реНрдЧ рджреЗрдЦреЗрдВред рд▓рд╛рдЗрди рдХреЛ рдЕрдирд▓реЙрдХ рдХрд░реЗрдВ рдФрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдПрдВ рддрд╛рдХрд┐ рд▓реЙрдиреНрдЪ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдЖрдкрдХреЛ рдЕрдкрдиреА рд╕рднреА рддреНрд░реБрдЯрд┐рдпрд╛рдВ рджрд┐рдЦрд╛рдИ рджреЗрдВред
рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐:
painter->drawLine(20*scale(), 0*scale(), 20*scale(), 10*scale());
рдФрд░
return QRectF(0, 0, 30*scale(), 30*scale());
- рдорди рд╕реЗ рджреБрдГрдЦред
рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдХреИрд╕реЗ QGraphicsItem рдкрд░рд┐рд╡рд░реНрддрди рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ:
struct QGraphicsItemPrivate::TransformData { QTransform transform; qreal scale; qreal rotation; qreal xOrigin; qreal yOrigin; QList<QGraphicsTransform *> graphicsTransforms; bool onlyTransform; TransformData() : scale(1.0), rotation(0.0), xOrigin(0.0), yOrigin(0.0), onlyTransform(true) { } QTransform computedFullTransform(QTransform *postmultiplyTransform = 0) const { if (onlyTransform) { if (!postmultiplyTransform || postmultiplyTransform->isIdentity()) return transform; if (transform.isIdentity()) return *postmultiplyTransform; return transform * *postmultiplyTransform; } QTransform x(transform); if (!graphicsTransforms.isEmpty()) { QMatrix4x4 m; for (int i = 0; i < graphicsTransforms.size(); ++i) graphicsTransforms.at(i)->applyTo(&m); x *= m.toTransform(); } x.translate(xOrigin, yOrigin); x.rotate(rotation); x.scale(scale, scale); x.translate(-xOrigin, -yOrigin); if (postmultiplyTransform) x *= *postmultiplyTransform; return x; } };
рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рд╕рд░рд▓ рдФрд░ рдЕрдкрд░рд┐рд╖реНрдХреГрдд рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдПрдХ рдШрд╛рд╕ рдХрд╛ рдореИрджрд╛рди рдореЗрдВ рдЧрд╛рдп рдХреЛ рдШрд╛рд╕ рдбрд╛рд▓рдирд╛ред рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдПрдХ рджреГрд╢реНрдп рдХреЛ рдЪрд┐рддреНрд░рд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣
рдХрдореНрдкреНрдпреВрдЯреЗрдб рдЯреНрд░рд╛рдВрд╕рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдо рд╡рд┐рдзрд┐ рдХреЛ рдЦреАрдВрдЪрддрд╛ рд╣реИ рдФрд░, рдХреБрдЫ рдФрд░ рд╢рд░реНрдордирд╛рдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЗрд╕реЗ QPainter рдХреЛ рд╣рдереЗрд▓рд┐рдпреЛрдВ рдореЗрдВ рд░рдЦрддрд╛ рд╣реИред рдпрд╣рд╛рдБ рд╣рдо рдЕрдкрдиреЗ рд▓рд┐рдП рдиреЛрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрджрд┐ рд╣рдо рдЕрдкрдиреЗ рдЖрдЗрдЯрдо рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдореБрд╢реНрдХрд┐рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ
рд╕реЗрдЯрд╕реНрдХреНрд▓реЗ ,
рд╕реЗрдЯрдкреЛрд╕ ,
рд╕реЗрдЯрд░реЛрдЯреЗрд╢рди рдФрд░
рд╕реЗрдЯрдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдо рдХреЗ рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП
, рдФрд░ рд╣рдореЗрдВ рдХрд┐рд╕реА рдФрд░ рдЪреАрдЬ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
рдХреЗрд╕ рдирдВрдмрд░ 4
рд╣рдо рдЖрдЗрдЯрдо рдкрд░ рдорд╛рдЙрд╕ рдХреА рдЧрддрд┐ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдореИрдВ рдЖрдкрдХреЛ рддреБрд░рдВрдд рдЪреЗрддрд╛рд╡рдиреА рджреЗрддрд╛ рд╣реВрдВ - рд░реЗрдХ рдХреЛ рд╕рдЪрдореБрдЪ рд╣рд░ рдХрджрдо рдкрд░ рдмрд╛рд╣рд░ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИред рдФрд░ рдЙрдиреНрд╣реЛрдВрдиреЗ рдореБрдЭреЗ рдмрд╣реБрдд рджрд░реНрдж рдФрд░ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╕реЗ рдкреАрдЯрд╛ред рд▓реЗрдХрд┐рди рдореИрдВ рдкрд░реАрдХреНрд╖рд╛рдУрдВ рдХреА рдкреВрд░реА рд╕реВрдЪреА рдХрд╛ рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ред рдореИрдВ рдХреЗрд╡рд▓ рдкреНрд░рдореБрдЦ рдмрд┐рдВрджреБрдУрдВ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдиреНрджреНрд░рд┐рдд рдХрд░реВрдВрдЧрд╛
рд╣рдо рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ Mainwindow.cpp рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрддреЗ рд╣реИрдВ: #include "MainWindow.h" #include <QGridLayout> #include <QGraphicsSceneHoverEvent> #include <QDebug> class MyRect: public QGraphicsRectItem { public: MyRect(const QRectF &rect, QGraphicsItem *parent=0):QGraphicsRectItem(rect, parent){} protected: void hoverMoveEvent(QGraphicsSceneHoverEvent *event) { qDebug()<<"rect"<<event->pos(); QGraphicsRectItem::hoverMoveEvent(event); } }; class CrossItem: public QGraphicsItem { public: QRectF boundingRect() const { return QRectF(0, 0, 30, 30); } void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) { Q_UNUSED(option) Q_UNUSED(widget); painter->setPen(QColor(Qt::red)); painter->drawLine(10, 0, 20, 0); painter->drawLine(20, 0, 20, 10); painter->drawLine(20, 10, 30, 10); painter->drawLine(30, 10, 30, 20); painter->drawLine(30, 20, 20, 20); painter->drawLine(20, 20, 20, 30); painter->drawLine(20, 30, 10, 30); painter->drawLine(10, 30, 10, 20); painter->drawLine(10, 20, 0, 20); painter->drawLine( 0, 20, 0, 10); painter->drawLine( 0, 10, 10, 10); painter->drawLine(10, 10, 10, 0); } protected: void hoverMoveEvent(QGraphicsSceneHoverEvent *event) { qDebug()<<"cross"<<event->pos(); QGraphicsItem::hoverMoveEvent(event); } }; MainWindow::MainWindow(QWidget *parent) : QWidget(parent) { setLayout(new QGridLayout()); graphicsView = new QGraphicsView(); layout()->addWidget(graphicsView); graphicsView->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); graphicsView->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); m_scene = new QGraphicsScene(); m_cross = new CrossItem(); m_rect = new MyRect(m_cross->boundingRect(), m_cross); m_cross->setAcceptHoverEvents(true); m_rect->setAcceptHoverEvents(true); m_scene->addItem(m_cross); m_scene->setSceneRect(m_rect->boundingRect()); graphicsView->setScene(m_scene); } MainWindow::~MainWindow() { }
рд╣рдо рд╕рд╛рдорд╛рдиреНрдп рддрд░реНрдХ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рджреГрд╢реНрдп рдШрдЯрдирд╛рдПрдВ рд╕рд╛рдорд╛рдиреНрдп рдШрдЯрдирд╛рдУрдВ рдХреЗ рдкреВрд░реНрдг рдПрдирд╛рд▓реЙрдЧ рд╣реИрдВред рд╣рдо рдХреНрдпрд╛ рдЦреБрд╢реА рд╕реЗ
QGraphicsSceneHoverEvent рдкрд░ рдбреЙрдХ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рд╣рдо рд╕рдВрдХрд▓рди рдХрд░рддреЗ рд╣реИрдВ, рдЪрд▓рд╛рддреЗ рд╣реИрдВ рдФрд░ рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдЬрдм рдЖрдк рдорд╛рдЙрд╕ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдШрдЯрдирд╛ рдХреЗрд╡рд▓ рдЖрдпрдд рддрдХ рдкрд╣реБрдВрдЪрддреА рд╣реИред рд╣рдо рдбреЙрдХ рдореЗрдВ рдЪрдврд╝рддреЗ рд╣реИрдВ, рдФрд░ рдХрд╣реАрдВ-рдХрд╣реАрдВ рд╣рд╛рд╢рд┐рдпреЗ рдкрд░ рд╣реИрдВ, рдЬрдм рд╣рдо рдЖрджрд┐рдХрд╛рд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рддреЗ рд╣реИрдВред рд╡рд┐рдзрд┐ рд╡рд┐рдзрд┐
, рд╣рдо рдкрдврд╝рддреЗ рд╣реИрдВ:
рдорд╛рддрд╛-рдкрд┐рддрд╛ рдЖрдЗрдЯрдо рдЕрдкрдиреЗ рдмрдЪреНрдЪреЛрдВ рд╕реЗ рдкрд╣рд▓реЗ рд╣реЙрд╡рд░ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХреА рдШрдЯрдирд╛рдУрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЕрдкрдиреЗ рдмрдЪреНрдЪреЛрдВ рдХреЗ рдмрд╛рдж рдШрдЯрдирд╛рдУрдВ рдХреЛ рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВред рдпрджрд┐ рдХрд░реНрд╕рд░ рдПрдХ рдмрдЪреНрдЪреЗ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЛ рдПрдХ рд╣реЙрд╡рд░ рдЕрд╡рдХрд╛рд╢ рдШрдЯрдирд╛ рдирд╣реАрдВ рдорд┐рд▓рддреА рд╣реИ; рдЬрдм рддрдХ рдХрд┐ рдХрд░реНрд╕рд░ рдЕрдкрдиреЗ рдХреНрд╖реЗрддреНрд░ рдХреЛ рдирд╣реАрдВ рдЫреЛрдбрд╝рддрд╛, рддрдм рддрдХ рдЕрднрд┐рднрд╛рд╡рдХ "рдордВрдбрд░рд╛рдпрд╛ рд╣реБрдЖ" рд░рд╣рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЙрд╕рдХреЗ рдмрдЪреНрдЪреЛрдВ рдХреЗ рдХреНрд╖реЗрддреНрд░ рднреА рд╢рд╛рдорд┐рд▓ рд╣реИрдВред
рдпрджрд┐ рдХреЛрдИ рдЕрднрд┐рднрд╛рд╡рдХ рдЖрдЗрдЯрдо рдЪрд╛рдЗрд▓реНрдб рдЗрд╡реЗрдВрдЯреНрд╕ рдХреЛ рд╣реИрдВрдбрд▓ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЙрд╕реЗ рд╣реЙрд╡рд░ рдореВрд╡, рдбреНрд░реИрдЧ рдореВрд╡, рдФрд░ рдбреНрд░реЙрдк рдЗрд╡реЗрдВрдЯреНрд╕ рдорд┐рд▓реЗрдВрдЧреЗ рдХреНрдпреЛрдВрдХрд┐ рдХрд░реНрд╕рд░ рдЙрд╕рдХреЗ рдмрдЪреНрдЪреЛрдВ рдХреЗ рдкрд╛рд╕ рд╕реЗ рдЧреБрдЬрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрд╕реЗ рд╣реЙрд╡рд░ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдФрд░ рд╣реЙрд╡рд░ рдХреА рдЫреБрдЯреНрдЯреА рдирд╣реАрдВ рдорд┐рд▓рддреА рд╣реИ, рдФрд░ рди рд╣реА рдЙрд╕рдХреА рдУрд░ рд╕реЗ рд▓реАрд╡ рдЗрд╡реЗрдВрдЯреНрд╕ рдХреЛ рдбреНрд░реИрдЧ рдФрд░ рдбреНрд░реИрдЧ рдХрд░реЗрдВ рдмрдЪреНрдЪреЛрдВред
рдЦрд┐рдбрд╝рдХреА рдХреА рд╕рдЬрд╛рд╡рдЯ рдХреЗ рд╕рд╛рде рдПрдХ QGraphicsWidget рд╣реЛрд╡рд░ рдИрд╡реЗрдВрдЯ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдЧрд╛ рднрд▓реЗ рд╣реА рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рд╡рдВрд╢рдЬ рдХреА рдШрдЯрдирд╛рдУрдВ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕реЗ рдорд╣рд╕реВрд╕ рдХрд░рддреЗ рд╣реБрдП рдФрд░ рдЕрдиреНрдп рдмрд╛рддреЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП, рд╣рдо рдПрдХ рдРрд╕реА рд╡рд┐рдзрд┐ рдХреА рддрд▓рд╛рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рд╣рдорд╛рд░реА рдорджрдж рдХрд░реЗред рдФрд░ рдпрд╣ рдПрдХ рд╣реИ, рдпрд╣
рд╕реЗрдЯрдлрд┐рд▓реНрдЯрд░реНрд╕ рдЪрд┐рд▓реНрдбрдПрд╡реЗрдВрдЯреНрд╕ (рд╕рдорд╛рди
рд╕реЗрдЯрд╣реИрдВрдбрд▓рд╢рд┐рдкреНрд╕ рдХреЗ рд╕рд╛рде рднреНрд░рдорд┐рдд рдирд╣реАрдВ рд╣реЛрдирд╛ рд╣реИ, рд╣рдо рдЙрд╕ рддрд░рд╣ рд╕реЗ рдорд╣рд┐рдорд╛ рдирд╣реАрдВ рдкрд╛ рд░рд╣реЗ рд╣реИрдВ)ред рдЗрд╕реЗ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:
m_cross->setFiltersChildEvents(true);
рдФрд░ CrossItem рд╡рд░реНрдЧ рдореЗрдВ рдПрдХ рдлрд╝рд┐рд▓реНрдЯрд░ рднреА рдЬреЛрдбрд╝реЗрдВ:
bool sceneEventFilter(QGraphicsItem *watched, QEvent *event) { if(event->type() == QEvent::GraphicsSceneHoverMove) qDebug()<<"cross"<<event; return false; }
рд╕рдВрдХрд▓рди рдХрд░реЗрдВ, рдЪрд▓рд╛рдПрдВред рд╣реБрд░реНрд░реЗ! рдХрдорд╛рдпрд╛ !!!
рдкрд░рд┐рдгрд╛рдо
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдПрдХ рд░рдЪрдирд╛рддреНрдордХ рдкрд░рд┐рдгрд╛рдо рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬреИрд╕рд╛ рдХрд┐ рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдЕрднреА рд╕рдлрд▓ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдпрд╣ рд╣рддрдкреНрд░рдн рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ - рдХрд┐рд╕реА рднреА рдЬреНрдпрд╛рдорд┐рддреАрдп рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рд╕реЗ рдЖрдЗрдЯрдо рдХреА рд╕реНрд╡рддрдВрддреНрд░рддрд╛ рдкрд░ рдХрд╛рдлреА рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдХреНрдпреВрдЯреА рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рд╣рдореЗрдВ рдЖрдЗрдЯрдо рдХреА рдШрдЯрдирд╛рдУрдВ рдХреЛ рд╡рд┐рддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╣реБрдд рд╣реА рдЕрдЬреАрдм рдкреНрд░рдгрд╛рд▓реА рдХреА рдкреЗрд╢рдХрд╢ рдХреАред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдПрдХ рдЕрд╕рд╛рдзрд╛рд░рдг рдорд╛рдорд▓рд╛ рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдмрд╕
QGraphicsItem рдореЗрдВ рдЭрдВрдбреЗ рджреЗрдЦрдирд╛ рдХрдард┐рди рд╕реЛрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред