Hej,
mam sobie niemodyfikowany flow layout, który jest obsługiwany przez QGraphicsView
. No i chciałbym sobie wrzucać na ten layout zdjęcia, ale problem leży w tym, że są QGraphicsPixmapItemami
, a mogę jedynie dodawać do układu obiekty typu QWidget
, czyli jak zamienię sobie je na jakieś QLabele
, to będzie działać.
Jak to wygląda?
w konstruktorze mainwindowa:
scene = new QGraphicsScene(this);
ui->graphicsView->setScene(scene); //QGraphicsView
flow_layout = new FlowLayout();
ui->graphicsView->setLayout(flow_layout);
w funkcji dodającej nowe obiekty:
auto item{ new QGraphicsPixmapItem{ QPixmap::fromImage(image) } };
item->setScale(0.1);
item->setFlags(QGraphicsItem::ItemIsSelectable | QGraphicsItem::ItemIsMovable);
//flow_layout->addWidget(new QPushButton(tr("dupa"))); //to ofc działa :D
flow_layout->addWidget(item); // cannot initialize a parameter of type 'QLayoutItem *' with an lvalue of type 'QGraphicsPixmapItem *'
jak widać wykorzystuję flagi i sobie skaluje obraz. O ile ze skalowaniem to nie jest problem, bo mogę sobie zdjęcia wrzucić na QLabel
i statycznie je jakoś zwiększać/zmniejszać to już nie wiem jak zachować właściwości przypisanych im flag używając innego typu.
Próbowałem bawić się też z QGraphicsProxyWidget
, ale nie mogę tego przekazać do funkcji, bo nie jest to typ związany z QWidget
. Chociaż też po prostu nie umiem korzystać z tej klasy.
A no i tych obrazów może być sporo. QWidget
chyba jest za ciężkim obiektem, żeby go radośnie ładować x500?
Jeżeli nie da się tego w jakiś sposób obejść, to pewnie będę musiał implementować swój własny flow_layout sztywno pozycjonujący kolejne obiekty + jakieś eventy :c
Jakieś wskazówki? c: