Probleme mit QCanvas

Alles rund um die Programmierung mit Qt
Antworten
Kellerkind
Beiträge: 2
Registriert: 11. November 2004 18:43

Probleme mit QCanvas

Beitrag von Kellerkind »

Hallo,
kann mir jemand sagen, warum im folgenden Programm die Änderungen wie Größe und Farbe nicht angezeigt werden? Es entsteht immer nur ein "default-QCanvas" mit falscher Größe und weißem Hintergrund.
Bin noch Neuling...


#ifdef HAVE_CONFIG_H
#include <config.h>
#endif

#include <qapplication.h>
#include <qcanvas.h>

class extCanvas : public QCanvas
{

private:
QCanvas newCanvas;
public:
extCanvas::extCanvas(int a, int b){
QCanvas newCanvas(a, b);
newCanvas.setBackgroundColor(QColor(20, 60, 120));
newCanvas.update();
}
};


int main(int argc, char *argv[])
{
QApplication myApp(argc, argv);

extCanvas newExtCanvas(800, 600);

QCanvasView newCanvasview(&newExtCanvas);

myApp.setMainWidget(&newCanvasview);

newCanvasview.show();

myApp.exec();
}
ArneStocker
Beiträge: 300
Registriert: 3. November 2004 16:15
Wohnort: Berlin

Beitrag von ArneStocker »

hallo,

wenn ich Deinen Programmcode richtig gelesen haben erzeugst Du eine Subklasse von QCanvas, die wiederum eine reines QCanvas Objekt als Member enthält und die in Ihrem Konstruktor die Farbe Ihres Memberobjekt verändert. An der Farbe des abgeleiteten QExtCanvas dürfte sich bis dahin nichts verändert haben.

Später im Main - Programm erzeugst Du jedoch ein abgeleitetes QExtCanvas Objekt, das schließlich auch dargestellt werden soll.

Frage : was willst Du mit der MemberVariablen QExtCanvas::newCanvas machen, deren Hintergrund Du farblich füllst ?

Wenn Du die Klasse ableitest, könntest Du doch im Konstruktor des abgeleiteten (QExtCanvas) Objekts die Farbe setzen

QExtCanvas::QExtCanvas(int x, int y)
{
...
this->setBackgroundColor(QColor(60,20,100));
}

PS: Ich glaube das Update kannst Du Dir sparen, weil das Objekt im Anschluss an die vollständige Fertigstellung (d.h. Beendigung des Konstruktors) sowieso gezeichnet wird.

Gruss Arne
Antworten