Seite 1 von 1

QGraphicsView absolute Position

Verfasst: 24. Mai 2010 00:12
von anno1988
Hallo,

ich versuche gerade Texte und Zeichnungen an absoluten Positionen im GraphicsView zu setzen.

dazu habe ich versucht die drawBackground() Methode zu benutzen. Allerdings kann ich diese nie an direkt die Position zeichnen, so dass die Items auch dort bleiben.

Jedes mal, wenn ich das Programmfenster horzontal vergrößere, verschiebt sich das Rechteck mit nach rechts, wie man auf dem Bild sehen kann.

Code: Alles auswählen



class MyScene : public QGraphicsScene {

   Q_OBJECT

public:
   
   MyScene();

   protected:
     QGraphicsRectItem myrect;

      void drawBackground(QPainter *painter, const QRectF &rect);

};

MyScene() {

myrect.setRect(0, 0, 50, 500);
}

void MyScene::drawBackground(QPainter *painter, const QRectF &rect) {

painter->fillRect(rect, backgroundBrush());
painter->fillRect(myrect.rect(), QBrush(Qt::white));

} 


Weiß da jemand wie das funktionieren könnte?

Verfasst: 24. Mai 2010 02:20
von Chris81T
So ganz versteh ich nicht, was du vorhast.

Ich vermute mal, dass dein Vorhaben nicht ganz optimal gewählt ist (kann mich auch irren).

Also generell würde ich die Texte und Zeichnungen in eigenen Items unterbringen und diese in die Szene einfügen. Dort sind diese ja "fest" positioniert. Über die background Methode dies zu machen, hmm, hört sich unschön an.

In dem Einstiegsdokument The Graphics View Framework wird auch nochmal gezielt auf die Koordinaten der jeweiligen Komponenten eingegangen. Darüber findest du event. ne Idee zur Lösung deines Problems

Verfasst: 24. Mai 2010 09:55
von upsala
Zum einen verlierst du sämtliche Optimierungen der QGraphicsView wenn du nur auf dem Background zeichnest, da könnest du gleich ein QWidget nehmen. Zum anderen suchst du den resizeAnchor.