Im QTextBrowser Bilder beim Kopieren durch Strings ersetzen

Alles rund um die Programmierung mit Qt
Antworten
revelation
Beiträge: 3
Registriert: 13. Dezember 2006 15:49

Im QTextBrowser Bilder beim Kopieren durch Strings ersetzen

Beitrag von revelation »

Hallo zusammen,

ich habe ein Problem und suche mich schon seit Tagen tot:
In einem QTextBrowser befindet sich eine Chat-Log mit Text und Bildern gemischt (für die Smileys). Das Problem ist nun, dass man den nicht ohne weiteres kopieren kann. Wenn ich ihn wieder in einen QTextBrowser einfüge, der RichText erlaubt, klappt alles bestens. Möchte ich ihn aber in einen mit PlainText oder ein anderes Programm einfügen, werden die Smileys durch nicht darstellbare Sonderzeichen ersetzt.
Mein Ziel wäre es, dass ich nur reinen Text kopiere und beim Einfügen die Smileys durch die entsprechenden Codes ersetzt werden. Leider habe ich absolut keine Ahnung, wie das gehen könnte...

Vielen Dank für eure Hilfe! :)

Gruß
Johannes
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Du könntest hier mal versuchen anzusetzen:

Code: Alles auswählen

QMimeData * QTextEdit::createMimeDataFromSelection() const
. Diese Methode überschreiben, vom QTextEdit QMimeData abfragen und eine neue anhand eines Filters erstellen...
revelation
Beiträge: 3
Registriert: 13. Dezember 2006 15:49

Beitrag von revelation »

upsala hat geschrieben:Diese Methode überschreiben, vom QTextEdit QMimeData abfragen und eine neue anhand eines Filters erstellen...
Das mit dem Überschreiben ist wohl genau das, was ich gesucht hab. Vielen Dank.
Allerdings weiß ich nicht, was du mit "Filter" meinst... Grad schlag ich mich mit QTextCursor rum. ;)

Gruß
Johannes
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Ja, ich seh gerade, daß es nichts bringt die Orginaldaten zu filtern.
revelation
Beiträge: 3
Registriert: 13. Dezember 2006 15:49

Beitrag von revelation »

Könnte mir jemand sagen, wo ich ansetzen kann? Ich trete leider auf der Stelle... :(
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

QMimeData * QTextEdit::createMimeDataFromSelection() const
QTextCursor QTextEdit::textCursor () const
int QTextCursor::selectionEnd () const
int QTextCursor::selectionStart () const
QTextBlock QTextDocument::findBlock ( int pos ) const

Pseudocode:

QString text;
QTextBlock block=findBlock(selectionStart());
while (block.position()<selectionEnd()) {
if (block.charFormat().isImageFormat()) {
QTextImageFormat imgFormat=block.charFormat();
if (imgFormat.name()==":/smilie1") {
text+=":)";
}
if (imgFormat.name()==":/smilie2") {
text+=":(";
}
usw...
} else {
text+=block.text();
}

block=block.next();
}
Antworten