Ich beschäftige mich gerade zum ersten Mal mit dem QPainter; bitte deshalb um Nachsicht.
Bin in QT Anfänger; mit steigender Tendenz.
Ich möchte in einem Widget z.B. Widget2 eines QStackedwidgets, welches Teil eines größeren Mainwindows ist, diverse Linien zeichen.
Testweise bekomme ich eine Linie über das gesamte Mainwindow.
Code: Alles auswählen
void MainWindow::paintEvent(QPaintEvent *)
{
QPainter painter(this);
painter.setPen(Qt::blue);
painter.drawLine(50,50,1000,1000);
}
Deshalb habe ich versucht, nur das Widget2 anzusprechen, was aber mit einer Fehlermeldung endetet:
Code: Alles auswählen
QPainter painter(Widget2);
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::setPen: Painter not active
Kann ich nicht direkt in ein bestimmtes Widget zeichen?
Ich könnte mir zwar die Eckkoordinaten des Widgets ausrechen und nur innerhalb dieser Koordinaten zeichen, aber dann müßte ich bei
einem Wechsel auf ein anders Widget des QStackedwidget irgenwie die Linien wieder löschen und bei einem Wechsel auf Widget2 wieder
zeichnen.
Wie kann ich das anders lösen ?
Gibt es da einen besseren Weg?
Wann wird eigentlich das QPainterevent aufgerufen?
Beim Keypressevent ist es klar-> bei einem Tastendruck, aber bei diesem ?
Wenn ich z.B. Widget2->update() mache ??
Danke für Eure Antworten.
Bang-Johansen