Here my trial.
//compositeitem.h
{
CompositeItem
(QString id, QList<QGraphicsWidget
*> children
);
~CompositeItem();
void setGeometry
(const QRectF &rect
);
};
//compositeitem.cpp
CompositeItem
::CompositeItem(QString id,QList<QGraphicsWidget
*> children
){
QGraphicsWidget *child;
foreach(child,children)
{
addToGroup(child);
}
}
CompositeItem::~CompositeItem()
{
}
QSizeF CompositeItem
::sizeHint() {
...
}
void CompositeItem
:: setGeometry(const QRectF &rect
) {
QGraphicsLayoutItem::setGeometry(rect);
}
//mainwindow.cpp
ui.graphicsView->setScene(scene);
QGraphicsLinearLayout *layout = new QGraphicsLinearLayout;
CompositeItem * ci = new CompositeItem(...);
layout->addItem(ci);
QGraphicsWidget *container = new QGraphicsWidget;
container->setLayout(layout);
scene->addItem(container);
//compositeitem.h
class CompositeItem : public QGraphicsLayoutItem,public QGraphicsItemGroup
{
CompositeItem(QString id, QList<QGraphicsWidget *> children);
~CompositeItem();
QSizeF sizeHint() const;
void setGeometry(const QRectF &rect);
};
//compositeitem.cpp
CompositeItem::CompositeItem(QString id,QList<QGraphicsWidget *> children)
{
QGraphicsWidget *child;
foreach(child,children)
{
addToGroup(child);
}
}
CompositeItem::~CompositeItem()
{
}
QSizeF CompositeItem::sizeHint()
{
...
}
void CompositeItem:: setGeometry(const QRectF &rect)
{
QGraphicsLayoutItem::setGeometry(rect);
}
//mainwindow.cpp
QGraphicsScene *scene = new QGraphicsScene;
ui.graphicsView->setScene(scene);
QGraphicsLinearLayout *layout = new QGraphicsLinearLayout;
CompositeItem * ci = new CompositeItem(...);
layout->addItem(ci);
QGraphicsWidget *container = new QGraphicsWidget;
container->setLayout(layout);
scene->addItem(container);
To copy to clipboard, switch view to plain text mode
Here i do not see my compositeitem drawing on scene.
Bookmarks