#include <QtWidgets>
{
public:
{
setData(0, name);
}
void setSize
(const QRect & r
) {
setRect(r);
GraphicsRectItem * parent = dynamic_cast<GraphicsRectItem *>(parentItem());
if(parent)
parent->adjust();
// Showing rect size in text
text
->setText
(QString("%5-{%1,%2,%3,%4}").
arg(r.
x()).
arg(r.
y()).
arg(r.
width()).
arg(r.
height()).
arg(data
(0).
toString()));
text->setPos(rect().center());
text->moveBy(-text->boundingRect().width()/2, -text->boundingRect().height()/2);
}
private:
void adjust()
{
if(dynamic_cast<const GraphicsRectItem *>(child))
rect = rect.united(child->boundingRect().toRect());
setSize(rect);
}
};
int main(int argc, char *argv[])
{
GraphicsRectItem * R = new GraphicsRectItem("R");
GraphicsRectItem * RC1 = new GraphicsRectItem("RC1", R);
GraphicsRectItem * RC2 = new GraphicsRectItem("RC2", R);
GraphicsRectItem * RC3 = new GraphicsRectItem("RC3", R);
GraphicsRectItem * RGC1 = new GraphicsRectItem("RGC1", RC1);
GraphicsRectItem * RGC2 = new GraphicsRectItem("RGC2", RC1);
RGC1
->setSize
(QRect(0,
0,
300,
75));
RGC2
->setSize
(QRect(0,
75,
300,
75));
RC2
->setSize
(QRect(0,
150,
300,
100));
RC3
->setSize
(QRect(0,
250,
300,
100));
scene.addItem(R);
view.setScene(&scene);
view.show();
return app.exec();
}
#include <QtWidgets>
class GraphicsRectItem : public QGraphicsRectItem
{
public:
explicit GraphicsRectItem(const QString & name, QGraphicsItem * parent = 0)
: QGraphicsRectItem(parent)
, text(new QGraphicsSimpleTextItem(this))
{
setData(0, name);
}
void setSize(const QRect & r)
{
setRect(r);
GraphicsRectItem * parent = dynamic_cast<GraphicsRectItem *>(parentItem());
if(parent)
parent->adjust();
// Showing rect size in text
text->setText(QString("%5-{%1,%2,%3,%4}").arg(r.x()).arg(r.y()).arg(r.width()).arg(r.height()).arg(data(0).toString()));
text->setPos(rect().center());
text->moveBy(-text->boundingRect().width()/2, -text->boundingRect().height()/2);
}
private:
void adjust()
{
QRect rect;
foreach(const QGraphicsItem * child, childItems())
if(dynamic_cast<const GraphicsRectItem *>(child))
rect = rect.united(child->boundingRect().toRect());
setSize(rect);
}
QGraphicsSimpleTextItem * const text;
};
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
GraphicsRectItem * R = new GraphicsRectItem("R");
GraphicsRectItem * RC1 = new GraphicsRectItem("RC1", R);
GraphicsRectItem * RC2 = new GraphicsRectItem("RC2", R);
GraphicsRectItem * RC3 = new GraphicsRectItem("RC3", R);
GraphicsRectItem * RGC1 = new GraphicsRectItem("RGC1", RC1);
GraphicsRectItem * RGC2 = new GraphicsRectItem("RGC2", RC1);
RGC1->setSize(QRect(0,0,300,75));
RGC2->setSize(QRect(0,75,300,75));
RC2->setSize(QRect(0,150,300,100));
RC3->setSize(QRect(0,250,300,100));
QGraphicsScene scene;
scene.addItem(R);
QGraphicsView view;
view.setScene(&scene);
view.show();
return app.exec();
}
To copy to clipboard, switch view to plain text mode
Bookmarks