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();
}
Probleme mit QCanvas
-
- Beiträge: 300
- Registriert: 3. November 2004 16:15
- Wohnort: Berlin
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
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