ItemIgnoresTransformations-flag zeigt keine funktion

Alles rund um die Programmierung mit Qt
Antworten
q-tee
Beiträge: 32
Registriert: 17. September 2007 17:43

ItemIgnoresTransformations-flag zeigt keine funktion

Beitrag von q-tee »

hi,

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
}
der konstruktor

Code: Alles auswählen

VarRect::VarRect(float width, float height){
    fixRect = new FixRect(100, height);
    fixRect->setFlags(QGraphicsItem::ItemIgnoresTransformations);  // <<------------------  flag setzen
}
und die paint-funktionen

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));
}
Antworten