Fragen bezüglich QPainter...

Alles rund um die Programmierung mit Qt
Antworten
Alci
Beiträge: 70
Registriert: 24. März 2006 23:34

Fragen bezüglich QPainter...

Beitrag 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.
Tarek
Beiträge: 46
Registriert: 3. Oktober 2005 14:29
Kontaktdaten:

Beitrag 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.
Alci
Beiträge: 70
Registriert: 24. März 2006 23:34

Beitrag 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.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag 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.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Antworten