einzelne Pixel per Maus auf Hintergrund zeichnen
Verfasst: 6. November 2013 12:46
Hallo zusammen,
folgende Problemstellung: In meinem GUI brauche ich links ein Fenster (Zeichenbereich, gelber Hintergrund), wo ich z.B. mit Mausklicks (das mit dem eventFilter für die Mausinputs funktioniert wunderbar) einzelne Pixel einfärben (schwarz) kann und rechts verschiedene Buttons/Schieberegler.
Also habe ich mein MainWindow mit dem centralWidget als "Wurzel", links mein widget (QWidget) zum zeichen und rechts meine Knöpfe. Als Alternative dazu bietet sich ja QImage an, aber da ich erstmal nix speichern will, sondern nur zur Laufzeit ein bisschen rumspielen, bin ich doch mit QWidget gut bedient, oder?
Nun kommt das erste Problem, wenn ich im Konstruktor vom MainWindow per "widget->setStyleSheet("background-color:yellow;");" die Hintergrundfarbe setze, kann ich mit dem "MainWindow::paintEvent(QPaintEvent *event){...}" zwar Pixel manipulieren, aber das wird nicht angezeigt, weil es vom gelben Hintergrund überdeckt wird (wenn ich den Hintergrund transparent schalte sehe ich das es funktioniert).
--> Also dachte ich mir, definiere ich mir mein eigens widget (mywidget), abgeleitet von QWidget und nutze deren Paintmethode um auf dem gelben Hintergrund malen zu können, nur leider wird mir der Hintergrund ums verrecken nicht angezeigt. Ich habe "widget->setStyleSheet("background-color:yellow;");" im Konstruktor von MainWindow und mywidget gesetzt und selbst an den Anfang der Paintmethode in mywidget.cpp, alles ohne Erfolg.
Der einzige Workaround bisher ist auf Kosten der Hintergrundfarbe mein widget einzurahmen (damit es sich vom Rest der GUI abhebt) und den Hintergrund transparent zu setzen.
Was mache ich falsch? (Quelltext lasse ich erstmal außen vor, ich denke ich habe da irgendwo ein Denkfehler/Wissenslücke, wenn es doch kein offensichtlicher Fehler ist, reiche ich ihn asap nach)
Danke erstmal!
folgende Problemstellung: In meinem GUI brauche ich links ein Fenster (Zeichenbereich, gelber Hintergrund), wo ich z.B. mit Mausklicks (das mit dem eventFilter für die Mausinputs funktioniert wunderbar) einzelne Pixel einfärben (schwarz) kann und rechts verschiedene Buttons/Schieberegler.
Also habe ich mein MainWindow mit dem centralWidget als "Wurzel", links mein widget (QWidget) zum zeichen und rechts meine Knöpfe. Als Alternative dazu bietet sich ja QImage an, aber da ich erstmal nix speichern will, sondern nur zur Laufzeit ein bisschen rumspielen, bin ich doch mit QWidget gut bedient, oder?
Nun kommt das erste Problem, wenn ich im Konstruktor vom MainWindow per "widget->setStyleSheet("background-color:yellow;");" die Hintergrundfarbe setze, kann ich mit dem "MainWindow::paintEvent(QPaintEvent *event){...}" zwar Pixel manipulieren, aber das wird nicht angezeigt, weil es vom gelben Hintergrund überdeckt wird (wenn ich den Hintergrund transparent schalte sehe ich das es funktioniert).
--> Also dachte ich mir, definiere ich mir mein eigens widget (mywidget), abgeleitet von QWidget und nutze deren Paintmethode um auf dem gelben Hintergrund malen zu können, nur leider wird mir der Hintergrund ums verrecken nicht angezeigt. Ich habe "widget->setStyleSheet("background-color:yellow;");" im Konstruktor von MainWindow und mywidget gesetzt und selbst an den Anfang der Paintmethode in mywidget.cpp, alles ohne Erfolg.
Der einzige Workaround bisher ist auf Kosten der Hintergrundfarbe mein widget einzurahmen (damit es sich vom Rest der GUI abhebt) und den Hintergrund transparent zu setzen.
Was mache ich falsch? (Quelltext lasse ich erstmal außen vor, ich denke ich habe da irgendwo ein Denkfehler/Wissenslücke, wenn es doch kein offensichtlicher Fehler ist, reiche ich ihn asap nach)
Danke erstmal!