QSyntaxHighlighter und farbigen Text ins Clipboard kopieren

Alles rund um die Programmierung mit Qt
Antworten
Teetrinker
Beiträge: 37
Registriert: 21. Mai 2008 21:07

QSyntaxHighlighter und farbigen Text ins Clipboard kopieren

Beitrag von Teetrinker »

Hi,

ich benutze QSyntaxHighlighter um den Text in meinem QTextEdit farbig zu unterlegen. Ich würde jetzt allerdings gerne diesen farbigen Text ins Clipboard kopieren. Wenn ich das aber über QTextEdit::copy() mache, habe ich nur plain Text ohne Formatierung. Gibt es eine einfache Möglichkeit, an dem formatierten Text zu kommen und diesen ins Clipboard zu schreiben?
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Es gibt keinen farbigen Text. Es gibt nur 'HTML-Text'.
Teetrinker
Beiträge: 37
Registriert: 21. Mai 2008 21:07

Beitrag von Teetrinker »

upsala hat geschrieben:Es gibt keinen farbigen Text. Es gibt nur 'HTML-Text'.
Und wie soll mir diese Antwort jetzt bei dem Problem weiterhelfen?
NoRulez
Beiträge: 208
Registriert: 19. Juni 2007 15:43

Beitrag von NoRulez »

Das es nicht geht, außer den Text mit HTML Tags zu bekommen.
Sprich: toHtml();

LG NoRulez
Teetrinker
Beiträge: 37
Registriert: 21. Mai 2008 21:07

Beitrag von Teetrinker »

Okay, dann muss ich das Problem etwas genauer beschreiben. Ich möchte den Text nicht als HTML exportieren, weil dieser dann auch als HTML-Quelltext in z.B. OpenOffice eingefügt wird und nicht als formatierter Text. Und zudem fehlen auch in diesem HTML-Quelltext die Formatierungen (liegt an QSyntaxHighlighter).

Wenn ich Text in QTextEdit formatiere und mit QTextEdit::copy() kopiere, dann kann ich den Text (die Formatierungen bleiben erhalten!) überall per Paste farbig einfügen. Das Problem ist jedoch QSyntaxHighlighter. Die gemachten farblichen Veränderungen von QSyntaxHighlighter werden von QSyntaxHighlighter selber verwaltet und sind nicht über QTextEdit abrufbar, weswegen ein QTextEdit::toHtml() oder QTextEdit::copy() plain Text liefert.

Weiß jemand, wie ich dennoch an den farblich hervorgehobenen Text komme?
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Ich ging bis jetzt davon aus, daß der QSyntaxHighlighter auf die ganz normalen Formatierung vom QTextDocument zugreift und die Qt-Sourcen bestätigen dies auch.
Teetrinker
Beiträge: 37
Registriert: 21. Mai 2008 21:07

Beitrag von Teetrinker »

Ich habe es jetzt noch mal ausprobiert, Text in die QTextEdit eingegeben, der von QSyntaxHighlighter automatisch farblich formatiert wurde. Diesen dann via QTextEdit.toHtml() nach HTML exportiert und via QClipboard dann ins Clipboard und von dort manuell in eine Datei kopiert und diese mit dem Browser aufgerufen. Nach Aufruf des Dokuments sind die Formatierungen von QSyntaxHighlighter weg und man sieht nur schwarzen Text.

Hier in Qt Centre spricht jemand ein ähnliches Problem an, dass er die von QSyntaxHighlighter gemachten Änderungen nicht abrufen kann. Unter Linux kann ich das auf jeden Fall nachvollziehen, bei mir gehts auch nicht.

Wie auch immer, ich habe das Problem erst einmal so gelöst, dass ich den Text aus dem QTextEdit selber parse und in HTML mit den gewollten farblichen Änderungen umwandele. Danach wieder ins QTextEdit kopiere und dort via. QTextEdit.copy() ins Clipboard kopiere. Dadurch erhalte ich einen Text, den ich überall einfügen kann und seine Formatierungen behält.
Sehr unschön, aber anders klappt nicht. :(
Antworten