#include <QApplication>
#include <QtWidgets>
public QGraphicsLayoutItem
{
public:
QGraphicsLayoutItem(0, false)
{}
virtual QSizeF sizeHint
(Qt
::SizeHint,
const QSizeF
&) const {
}
painter->setBrush(Qt::white);
painter->drawRect(boundingRect());
}
virtual void setGeometry
(const QRectF &rect
) {
prepareGeometryChange();
QGraphicsLayoutItem::setGeometry(rect);
setPos(rect.topLeft());
}
virtual void updateGeometry() {
QGraphicsLayoutItem::updateGeometry();
}
virtual QRectF boundingRect
() const {
}
};
int main(int argv, char *argc[])
{
view.setScene(scene);
QGraphicsWidget * widget = new QGraphicsWidget;
QGraphicsLinearLayout *layout = new QGraphicsLinearLayout(Qt::Vertical);
widget->setLayout(layout);
scene->addItem(widget);
QList<Item*> items;
for(int i=0; i<10; i++) {
Item *item = new Item();
items.insert(i,item);
scene->addItem(item);
layout->addItem(item);
}
// data
qDebug() << im.size(); // QSize(960, 708)
for(int i=0; i<5; i++){
items.
at(i
)->setPixmap
(QPixmap::fromImage(im
));
items.at(i)->updateGeometry(); // what?
}
view.show();
return app.exec();
}
#include <QApplication>
#include <QtWidgets>
class Item : public QGraphicsPixmapItem,
public QGraphicsLayoutItem
{
public:
Item(QGraphicsItem *parent =0): QGraphicsPixmapItem(parent),
QGraphicsLayoutItem(0, false)
{}
virtual QSizeF sizeHint(Qt::SizeHint, const QSizeF&) const
{
return QSize(500,500);
}
virtual void paint( QPainter* painter,const QStyleOptionGraphicsItem * o, QWidget* w) {
painter->setBrush(Qt::white);
painter->drawRect(boundingRect());
QGraphicsPixmapItem::paint(painter,o,w);
}
virtual void setGeometry(const QRectF &rect)
{
prepareGeometryChange();
QGraphicsLayoutItem::setGeometry(rect);
setPos(rect.topLeft());
}
virtual void updateGeometry() {
QGraphicsLayoutItem::updateGeometry();
}
virtual QRectF boundingRect() const
{
return QRectF(QPointF(0,0), geometry().size());
}
};
int main(int argv, char *argc[])
{
QApplication app(argv, argc);
QGraphicsView view;
QGraphicsScene * scene= new QGraphicsScene();
view.setScene(scene);
QGraphicsWidget * widget = new QGraphicsWidget;
QGraphicsLinearLayout *layout = new QGraphicsLinearLayout(Qt::Vertical);
widget->setLayout(layout);
scene->addItem(widget);
QList<Item*> items;
for(int i=0; i<10; i++) {
Item *item = new Item();
items.insert(i,item);
scene->addItem(item);
layout->addItem(item);
}
// data
QImage im("cat.jpg");
qDebug() << im.size(); // QSize(960, 708)
for(int i=0; i<5; i++){
items.at(i)->setPixmap(QPixmap::fromImage(im));
items.at(i)->updateGeometry(); // what?
}
view.show();
return app.exec();
}
To copy to clipboard, switch view to plain text mode
Bookmarks