Moin Moin,
ich habe hier zwei QTextEdit Widgets, die ich synchronisieren möchte, d.h. wenn im rechten QTextEdit ein Zeilenumbruch erfolgt, möchte ich im linken QTextEdit z.b. eine Leerzeile einfügen.
Am einfachsten wäre ja jetzt, wenn das QTextEdit dieses Signal von sich aus verschicken würde. Leider ist das aber nicht implementiert, habe jedenfalls nichts gefunden.
Nun war meine Überlegung, das ich mein eigenes Widget einfach von QTextEdit ableite und das Signal dort implementiere. Allerdings weiß ich nicht so recht, *wo* ich das Signal implementieren soll.
Hat jemand ne Idee, wie ich das ganze lösen könnte?
Gruß HangLoose
Signal bei wordwrap versenden
Re: Signal bei wordwrap versenden
JaHangLoose hat geschrieben: Hat jemand ne Idee, wie ich das ganze lösen könnte?
Re: Signal bei wordwrap versenden
nu sag schon deinen preisGoos hat geschrieben:JaHangLoose hat geschrieben: Hat jemand ne Idee, wie ich das ganze lösen könnte?
Gruß HL
Re: Signal bei wordwrap versenden
Ok, ueber den Preis reden wir spaeter
Vielleicht erzaehlst uns noch, was du genau anstellen willst und wieso du deine QTextEdits synchronisieren moechtest.
Ganz trivial ist das naemlich nicht, da man in einem TextEdit natuerlich auch wild rumeditieren kann.
Goos
Vielleicht erzaehlst uns noch, was du genau anstellen willst und wieso du deine QTextEdits synchronisieren moechtest.
Ganz trivial ist das naemlich nicht, da man in einem TextEdit natuerlich auch wild rumeditieren kann.
Goos
Hi Goos,
ok hier noch ein paar mehr Infos. Es handelt sich dabei um einen Chat-Client, siehe Attachment.
Die Anzeige des eigentlichen Chatfenster habe ich in zwei QTextEdits aufgeteilt. Das linke QTextEdit zeigt dabei den Usernamen und je nach Konfiguration noch die Zeit an. Das rechte QTextEdit zeigt die Message des jeweiligen User an.
Wenn jetzt die Message zu lang für das rechte QTextEdit ist, wird nen wordwrap gemacht.
Bisher hab ich es so gelöst, das ich mir die Breite vom rechten Widget geholt habe, diesen Wert durch 7 dividiert habe(rausgefunden durch rumprobieren) und mit diesem Wert die WrapColumnOrWidth gesetzt habe.
Wenn jetzt ne Message eintrifft, wird geprüft ob sie *länger* als die
WrapColumnOrWidth ist, wenn ja wird im linken QTextEdit ne Leerzeile eingefügt usw.
Das Ganze gefällt mir irgendwie überhaupt nicht und wird mit der Auswahl von mehreren Fonts/Größen noch schlechter zu händeln. Am liebsten wäre mir ein Signal das bei einem wordwrap gesendet wird. QTextEdit selbst scheint so ein signal anscheinend aber nicht bereitzustellen.
Wenn du noch mehr Info's brauchst, einfach bescheid sagen
Gruß HL
ok hier noch ein paar mehr Infos. Es handelt sich dabei um einen Chat-Client, siehe Attachment.
Die Anzeige des eigentlichen Chatfenster habe ich in zwei QTextEdits aufgeteilt. Das linke QTextEdit zeigt dabei den Usernamen und je nach Konfiguration noch die Zeit an. Das rechte QTextEdit zeigt die Message des jeweiligen User an.
Wenn jetzt die Message zu lang für das rechte QTextEdit ist, wird nen wordwrap gemacht.
Bisher hab ich es so gelöst, das ich mir die Breite vom rechten Widget geholt habe, diesen Wert durch 7 dividiert habe(rausgefunden durch rumprobieren) und mit diesem Wert die WrapColumnOrWidth gesetzt habe.
Wenn jetzt ne Message eintrifft, wird geprüft ob sie *länger* als die
WrapColumnOrWidth ist, wenn ja wird im linken QTextEdit ne Leerzeile eingefügt usw.
Das Ganze gefällt mir irgendwie überhaupt nicht und wird mit der Auswahl von mehreren Fonts/Größen noch schlechter zu händeln. Am liebsten wäre mir ein Signal das bei einem wordwrap gesendet wird. QTextEdit selbst scheint so ein signal anscheinend aber nicht bereitzustellen.
Wenn du noch mehr Info's brauchst, einfach bescheid sagen
Gruß HL
- Dateianhänge
-
- ripcc1.jpg (88.96 KiB) 5590 mal betrachtet
Moin 
So wie ich das seh, solltest in deinem Fall ganz gut mit Paragraphen zurecht kommen.
Jede Message die du in dein Textedit schreibst ist ein Paragraph.
Die Anzahl der Leerzeilen die du dann links brauchst kannst ueber
ermitteln, wobei n die Nummer des neu angefuegten Paragraphen ist
...zu ermitteln ueber
Du musst dann halt nur noch eine Groessenaenderung deines Textedits abfangen und in dem Fall per Schleife ueber alle Paragraphen dein linkes Control wieder fuellen.
Goos
So wie ich das seh, solltest in deinem Fall ganz gut mit Paragraphen zurecht kommen.
Jede Message die du in dein Textedit schreibst ist ein Paragraph.
Die Anzahl der Leerzeilen die du dann links brauchst kannst ueber
Code: Alles auswählen
pMyTextEdit->lineOfChar(n, pMyTextEdit->paragraphLength(n))...zu ermitteln ueber
Code: Alles auswählen
pMyTextEdit->paragraphs()-1Goos