[solved]Zahlenfeld in QGraphicsObject

Alles rund um die Programmierung mit Qt
Antworten
Abayo
Beiträge: 25
Registriert: 18. Mai 2013 12:25

[solved]Zahlenfeld in QGraphicsObject

Beitrag von Abayo »

Hi @ all!

Ich habe folgendes Problem:
Ich möchte in einem QGraphicsObject einen Zahlenwert anzeigen der in einer Variable gespeichert ist.
Das Zahlenfeld sollte bewegbar sein, damit ich keine Ausrichtung mittels einem Layout machen muss (das haut sonst nicht ganz hin mit meinem Design -> rotierender Zeiger in dessem unterem Viertelkreis dann die Zahlen stehen).
Irgendwie finde ich nichts richtiges dafür.. hatte mir schon QLCDNumber angeschaut, aber da war die ausrichtung schwierig und das erwartet ein QWidget als parent.
Ein QGraphicsSimpleTextItem / QGraphicsTextItem würde zwar gehen, aber dann muss ich immer den int-wert der variable erst in einen QString umwandeln und hab ein wenig mehr arbeit um es gut aussehen zu lassen..

Kennt jmd. eine gute Möglichkeit eine Integer Variable auszulesen uns möglichst unkompliziert anzuzeigen?
Etwas in Richtung des LCDNumber, da mir das recht gut gefallen hat.

Mfg,
Zuletzt geändert von Abayo am 18. September 2013 13:23, insgesamt 3-mal geändert.
Abayo
Beiträge: 25
Registriert: 18. Mai 2013 12:25

Re: Zahlenfeld in QGraphicsObject

Beitrag von Abayo »

Ich habe nun versucht eine eigene Klasse Textfeld zu erstellen, welche von QGraphicsTextItem ableitet.

Code: Alles auswählen

#ifndef TEXTFELD_H
#define TEXTFELD_H

#include <QGraphicsTextItem>
#include <QGraphicsItem>
#include <QPainter>

class Textfeld : public QGraphicsTextItem
{
public:
    Textfeld( QGraphicsItem *parent );
    ~Textfeld();
    QRectF boundingRect() const;
    void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
};

#endif // TEXTFELD_H

Code: Alles auswählen

Textfeld::Textfeld( QGraphicsItem *parent )
    : QGraphicsTextItem(parent)
{

}

QRectF Textfeld::boundingRect() const
{
return QGraphicsTextItem::boundingRect().adjusted(-2,-2,+2,+2);
}

void Textfeld::paint(QPainter *painter,const QStyleOptionGraphicsItem *option,QWidget *widget)
{
QGraphicsTextItem::paint(painter,option,widget);
painter->setPen(Qt::lightGray);
painter->drawRect(boundingRect());
}
Allerdings bekomme ich nun immer den Fehler:
undefined reference to 'vtable for Textfeld'
kann mir wer sagen was ich hier falsch mache?
Die Klasse von der aus ich aufrufe ist ein

Code: Alles auswählen

class Speed : public QGraphicsObject

und ich übergebe ein

Code: Alles auswählen

class Back_S : public QGraphicsObject
als Parent (soll sich dann mit dem Hintergrund bewegen falls nötig)

insgesamt also in der Klasse speed:

Code: Alles auswählen

Speed::Speed(QGraphicsItem *parent)
    :QGraphicsObject(parent), speedVal(0), speedValOld(0)
{
    int wert = 2;
    back = new Back_S(this);
    front = new Front_S(back);  
    textfield = new Textfeld(back);
Für Hilfe wäre ich seh dankbar, komme da gerade nicht weiter!
Abayo
Beiträge: 25
Registriert: 18. Mai 2013 12:25

Re: Zahlenfeld in QGraphicsObject

Beitrag von Abayo »

ok, hab den Fehler gefunden :(
Ich sitz wohl schonzu lange am PC... hab diesen kleinen Fehler tatsächlich 2 Stunden lang nicht gesehen...

Für die die es interessiert:
Ich hab einen Destruktor "~Textfeld" in der Headerdatei angegeben, aber nicht in die .cpp-Datei geschrieben..

Edit:
Die obere Frage bleibt aber noch:
Was ist ne gute Methode? Gibt es eine bessere Methode als QGraphicsTextItem?
Antworten