nachdem mir bei meiner ursprünglichen idee ja keiner helfen konnte hab ich es jetzt so probiert:
nochmal kurz die ausgangssituation:
es sollen zwei rechtecke (qgraphicsitems) in eine scene gesetzt werden, das eine (varRect) soll mit dem zoom in der view vergrößert werden, das andere (fixRect) soll die ursprungsgröße behalten.
ich habe das fixRect jetzt als child des varRect genommen, damit man es als ein objekt ansprechen kann. es übernimmt jetzt aber trotz ItemIgnoresTransformations-flag die zoom-transformationen.
ist das immer so und ich kann es so garnicht lösen? oder mach ich was falsch?
hier mal der verkürzte code
die definitionen
Code: Alles auswählen
class VarRect : public QGraphicsItem{
public:
// [konstruktor, boundingRect, paint] aus platzgründen mal weggelassen
FixRect *fixRect;
}Code: Alles auswählen
class FixRect : public QGraphicsItem{
public:
// [konstruktor, boundingRect, paint] aus platzgründen mal weggelassen
}Code: Alles auswählen
VarRect::VarRect(float width, float height){
fixRect = new FixRect(100, height);
fixRect->setFlags(QGraphicsItem::ItemIgnoresTransformations); // <<------------------ flag setzen
}Code: Alles auswählen
void VarRect::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) {
painter->drawRect(QRectF (0, 0, width, height));
fixRect->paint(painter, option, widget)
}Code: Alles auswählen
void FixRect::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) {
painter->drawRect(QRectF (0, 0, width, height));
}