Seite 1 von 1

In workspace zeichnen

Verfasst: 29. August 2010 14:23
von kannaum
Hallo ich schon wieder ;-)

Neuer Tag neues Problem.

Ich habe eine QWorkspace, in der ich dem Benutzer etwas zeichnen lassen will.
Die QWorkspace habe ich schon.
Ich schaffe es auch, dass ich zum Beispiel eine blaue Linie in das Hauptfenster zeichne, aber ich schaffe es nicht in die Workspace zu zeichnen.
Mein Code:

Code: Alles auswählen

void Mathematik::paintEvent(QPaintEvent *)
{
    QPainter painter;
    painter.begin(zeichenflaeche);
    painter.setPen(Qt::blue);
    painter.drawLine(100,20,100,100);
    painter.end();
}
zeichenflaeche ist die QWorkspace.

Wenn ich das Programm ausführe kommt kontinuierlich folgendes:
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::setPen: Painter not active
QPainter::end: Painter not active, aborted
Weiß jemand was ich falsch mache?

mfg

Verfasst: 29. August 2010 16:55
von Christian81
Man kann nur innerhalb des paintEvent() des Widgets zeichnen...

Verfasst: 29. August 2010 17:05
von kannaum
O, was heißt das jetzt konkret?
Geht es nicht oder anders?

mfg

Verfasst: 29. August 2010 17:22
von Christian81
???
Wenn du in zeichenflaeche zeichnen willst musst Du dies im paintEvent() von zeichenflaeche machen...

Verfasst: 29. August 2010 18:38
von kannaum
Ok, jetzt habe ichdas mit QWorkspace noch einmal nachgelesen und weis nun was ich falsch gemacht habe.

Aber ich bekomms immer noch nciht so richtig hin.

Ich habe in Hauptfenster.
In dem ist rechts eine QWorkspace.
Dort will ich dann so ein Mdi-Fenster hinmachen, indem man etwas zeichnen kann.
In das selbe Fenster will ich aber auch Buttons zur Farbe usw. hinmachen.

Jetzt habe ich aber leider noch keine Ahnung wie ich das machen soll.
Soll ich diese ganzen Widgets die ich brauche, in en Layout packen, dann das Layout in ein QWidget und dieses dann mit addWindow() zum Mdi-Fenster machen oder wie ist das?

Und welches Widget soll ich zum "draufzeichnen" nehmen?

mfg

Verfasst: 29. August 2010 18:55
von Christian81
Einfach ein Layout, alle Buttons und eine Zeichenfläche (== Deine Klasse von QWidget abgeleitet) reinpacken + darstellen. Ob das MDI oder sonst was ist interessiert in diesem Falle rein gar nicht.