Hello,
the following code draws 3 ellipses and one rectangle.
These 4 object are grouped in a QGraphicsItemGroup together.
What i want to do is to implement 2 states:
First state:
If the rectangles moves, the ellipses move too, like the code shows.
Second state:
This is where i do not find a solution.
I need a state where I make the ellipses moveable inside the rectangle , for example with a double click on the rectangle.
And if i click back outsite the rectangle, the ellipses fix back to the rectangle. (first state).
How i could do this?
Thx Andre
mainwindow.h
Code:
#include <QMainWindow> #include "customitemellipse.h" #include "customitemrect.h" namespace Ui { class MainWindow; } { Q_OBJECT public: ~MainWindow(); private: Ui::MainWindow *ui; QGraphicsScene *scene; QGraphicsItemGroup *group; };
mainwindow.cpp
Code:
#include "mainwindow.h" #include "ui_mainwindow.h" ui(new Ui::MainWindow) { ui->setupUi(this); ui->graphicsView->setScene(scene); group = scene->createItemGroup(scene->selectedItems()); CustomItemEllipse *ellipse1 = new CustomItemEllipse(); scene->addItem(ellipse1); group->addToGroup(ellipse1); CustomItemEllipse *ellipse2 = new CustomItemEllipse(); scene->addItem(ellipse2); group->addToGroup(ellipse2); CustomItemEllipse *ellipse3 = new CustomItemEllipse(); scene->addItem(ellipse3); group->addToGroup(ellipse3); CustomItemRect *rect = new CustomItemRect(); scene->addItem(rect); group->addToGroup(rect); }
customitemellipse.h
Code:
#include <QGraphicsItem> #include <QPainter> { public: QRectF ellipse; public: CustomItemEllipse(); };
customitemellipse.cpp
Code:
#include "customitemellipse.h" CustomItemEllipse::CustomItemEllipse() { ellipse = boundingRect(); setFlag(ItemIsMovable); setZValue(10); } { } void CustomItemEllipse::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) { painter->setBrush(Qt::gray); painter->setPen(pen); painter->drawEllipse(ellipse); }
customitemrect.h
customitemrect.cpp
Code:
#include "customitemrect.h" CustomItemRect::CustomItemRect() { rect = boundingRect(); setFlag(ItemIsMovable); setScale(5); } { } void CustomItemRect::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) { painter->setBrush(Qt::white); painter->setPen(pen); painter->drawRoundRect(rect); }