QGraphicsView absolute Position

Alles rund um die Programmierung mit Qt
Antworten
anno1988
Beiträge: 280
Registriert: 23. Januar 2009 20:49

QGraphicsView absolute Position

Beitrag 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?
Dateianhänge
myrect.png
myrect.png (3.99 KiB) 2473 mal betrachtet
Chris81T
Beiträge: 82
Registriert: 4. Mai 2008 00:06
Wohnort: Urbar

Beitrag 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
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag 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.
Antworten