[gelöst]String auf Rechteck platzieren

Alles rund um die Programmierung mit Qt
Antworten
toba
Beiträge: 28
Registriert: 22. September 2011 09:28

[gelöst]String auf Rechteck platzieren

Beitrag von toba »

Hi!

Habe vor ca. 3 Wochen mit Qt angefangen (Vollzeit) und hab mir seither eigentlich immer mit google oder dem Forum hier helfen können. Jetzt kommt aber mein erstes Problem auf das ich noch keine Antwort gefunden habe. Hört sich eigentlich einfach an: Ich möchte einen QString, fest auf einem Rechteck (Polygon) anbringen.
Das Rechteck ist auf einer QGraficScene platziert und lässt sich per MouseMoveEvent verschieben.
Rechteck Eigenschaften (Größe, Farbe, der zu Platzierene String...) wird aus einer Datei ausgelesen und an die Zeichenmethode übergeben.

Zur Zeit sieht das ganze so aus:
Header:

Code: Alles auswählen

#ifndef CLAGE_H
#define CLAGE_H

#include "Allgemein.h"

class CLage : public QGraphicsPolygonItem
{
public:
    CLage(QString, QString, int , int, QGraphicsItem *parent = 0, QGraphicsScene *scene = 0);
    virtual ~CLage();

private:
    QPolygonF myPolygon;
};

#endif // CLAGE_H
In Allgemein.h sind alle benötigten Header eingebunden

Die .cpp

Code: Alles auswählen

#include "CLage.h"

CLage::CLage (QString Farbe, QString Name, int Hoehe, int Breite, QGraphicsItem *parent, QGraphicsScene *scene)
       : QGraphicsPolygonItem(parent, scene)
{

    myPolygon << QPointF(-Breite/2, -Hoehe/2) << QPointF(Breite/2, -Hoehe/2)
              << QPointF(Breite/2, Hoehe/2) << QPointF(-Breite/2, Hoehe/2)
              << QPointF(-Breite/2, -Hoehe/2);

    setPolygon(myPolygon);
    setFlag(QGraphicsItem::ItemIsMovable, true);
    setFlag(QGraphicsItem::ItemIsSelectable, true);

    if (Farbe=="Rot")
        setBrush(Qt::red);
    else if (Farbe=="Blau")
        setBrush(Qt::blue);
    //noch einige else if...
}

//Braucht man die Destruktoren überhaupt in Qt???
CLage::~CLage()
{
}
Nun werde ich warscheinlich so nicht weiter kommen?
Ich bin grad ein wenig Ratlos wie man das ganze den anstellen könnte.. in WPF gabs da ne schöne Methode wo an einfach einen String in einen Brush umformen kann, leider is diese hier nicht vorhanden :(
Werde hier wohl den QPainter benutzen müssen? Oder gibt es noch eine andere Möglichkeit?

Beim QPainter bin ich mir nur sehr unsicher was die Möglichkeiten des MouseMoveEvents usw. angeht.

Jemand einen Tipp? (Glaube das ganze ist so einfach das ich schon viel zu kompliziert denke..)
Thx!
Zuletzt geändert von toba am 26. September 2011 14:03, insgesamt 1-mal geändert.
dennisDennis
Beiträge: 17
Registriert: 23. September 2011 16:21

Re: String auf Rechteck platzieren

Beitrag von dennisDennis »

Nimm doch ein QGraphicsTextItem und initialisiere es im Konstruktor deines QGraphicsPolygonItems

QGraphicTextItem* texItem = new QGraphicsTextItem("Hello World",this);
mit setPos() kannst du es genau plazieren.

Wenn du das Polygon verschiebst, verschiebt sich auch der Text, da es ein Child von dem Polygon ist.

Gruß
Dennis
toba
Beiträge: 28
Registriert: 22. September 2011 09:28

Re: String auf Rechteck platzieren

Beitrag von toba »

Danke perfekt.

So einfach hätt man auch selbst drauf kommen können und ich mach nen ganzen tag dran rum...

vielen dank dann nochmal!!
Antworten