Seite 1 von 1

Fragen bezüglich QPainter...

Verfasst: 11. April 2006 08:44
von Alci
Hallo,

ich möchte ein eigenes Widget nachprogrammieren (eine abgespeckte QTextEdit). Nun habe ich schon mal die ersten Versuche gestartet, habe aber ein paar Fragen bezüglich dem Zeichnen eines Fenster und QPainter:

Meine Fragen:
1. Ich habe die Methode paintEvent in meiner Unterklasse überschrieben. Da erzeuge ich bei jedem Aufruf ein QPainter-Object.

Code: Alles auswählen

void paintEvent(QPaintEvent* pEvent)
{
QPainter Painter;
Painter.begin(this);
//meine Zeichenoperationen
Painter.end();
}
Ist das jetzt sinnvoll? Kann man den QPainter nicht auch als member einmal anlegen? Wie wird das "in der Praxis" gemacht? Ich weiß, dass z. B. in der WinAPI der DeviceContext jedes mal angelegt wird, wenn WM_PAINT ausgelöst wurde.

2. Ich habe versucht, von einer anderen Methode aus, eine Zeichenoperation zu starten. Da habe ich halt dort ein QPainter erzeugt und ein paar Zeichenoperationen gemacht.
ABER: Es hatte keinerlei Auswirkungen gehabt. Wieso? Kann ich nicht einfach beliebig ins Fenster reinzeichnen?

3. Wenn ich in einer QTextEdit mit gedrückter linker Maustaste über den Text fahre, dann wird ja dieser Textabschnitt markiert. Wie könnte man sowas realisieren?

So, für's erste bin ich fertig. Hoffentlich könntet Ihr mir ein paar Tipps geben.

MfG, Alci.

Verfasst: 12. April 2006 19:31
von Tarek
1. Ich denk mal das ist egal, allerdings erzeugen die Qt-eigenen Klassen auch immer wieder einen neuen QPainter... das .end() ist dann allerdings doppelt gemoppelt.

2.
Painting using a QPainter can only take place in a paintEvent() or a function called by a paintEvent().
3. Einfach den ausgewählten bereich invertieren.

Verfasst: 12. April 2006 21:02
von Alci
Hm, OK. Das end() wird wahrscheinlich eh beim zerstören vom QPainter-Object gemacht. Aber das man den QPainter immer wieder neu erzeugt, da sehe ich irgendwie keinen Sinn dahinter. Vielleicht gibt es ja einen.

Schon mal danke.
MfG, Alci.

Verfasst: 13. April 2006 08:33
von Christian81
Alci hat geschrieben:Aber das man den QPainter immer wieder neu erzeugt, da sehe ich irgendwie keinen Sinn dahinter. Vielleicht gibt es ja einen.

Schon mal danke.
MfG, Alci.
Es geht nicht anders da dein Window-Handle (in Windows: HDC) auch immer anders sein kann/ist. Würde man es nicht neu erzeugen würdest du auf einen falschen DeviceContext zeichnen und Dich wundern warum nichts passiert.