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
QPainter Vererbung
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
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...
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
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.
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.