QPainter Vererbung

Alles rund um die Programmierung mit Qt
Antworten
thespiders
Beiträge: 5
Registriert: 28. Juni 2007 14:51

QPainter Vererbung

Beitrag von thespiders »

Hallo NG,

Habe ein kleines Problem damit die QPainter-Klasse zu vererben. Ein QPainter wird ja mit QPainter painter(this); erzeugt - dieses Konstrukt, was ist das?

Wenn ich das vererbe möchte ich in meiner neuen Klasse MyPainter einen ähnlichen Aufruf machen MyPainter painter(this) und so das PaintDevice angeben. MyPainter soll genauso sein wie QPainter, nur ein paar Extramethoden haben wie drawBubble(...)
Aber ich bekomme die Fehlermeldung: `QPainter' is not an accessible base of `MyPainter'. Wie müsste der Konstruktor aussehen?

Außerdem möchte ich ihn global deklarieren, das geht aber nicht wegen der painter(this)-sache. Wie mache ich das?

Gruß, Johannes
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

1. Lern mal C++ - Vererbung sollte man schon beherrschen bevor man mit Qt anfängt
2. Ohne das Du uns Code zeigst können wir nicht helfen
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
lepsai
Beiträge: 573
Registriert: 14. September 2004 21:33
Wohnort: Berlin
Kontaktdaten:

Beitrag von lepsai »

Dein problem ist wahrscheinlich, dass deine Vererbung etwa so aussieht:

class MyPainter: QPainter
{
...
};

sollte aber so sein:

class MyPainter: public QPainter
{

};



Global deklarieren ist Quatsch, da ein Painter eine Relation zu dem PaintDevice haben muss. Also ist eine Deklaration:

MyPainter globalPainter;

sinnlos.

Alternativ ginge:

MyPainter* myGlobalPainterPtr = NULL;

mit einer späteren Instanzerung. Aber das ist auch Schwachsinn. Also sag uns, was du erreichen möchstest, dann können wir wirklich helfen...


Und hör auf Christian, C++ Kentnisse sind unabdingbar, um mit Qt zu arbeiten...
thespiders
Beiträge: 5
Registriert: 28. Juni 2007 14:51

Beitrag von thespiders »

So 100% trittfest bin ich leider tatsächlich noch nicht in Vererbung. Hab mich jetzt damit beholfen die Instantiierung mit

QPainter *painter = new QPainter(this);

durchzuführen, anstatt mit

QPainter painter(this);

wie es in den Tutorials steht. Dann klapps auch wie von anderswo gewohnt mit der Vererbung meiner Klasse class MyPainter : public QPainter.

Dass ich dann nen Pointer hab auf ein Painterobjekt stört nicht. Funktioniert trotzdem. Danke für eure Mühen.
Antworten