Seite 1 von 1

[GELÖST] Zeichen nach Lesen einer Datei nicht angezeigt

Verfasst: 22. Dezember 2010 23:31
von Fred
Guten Abend,

ich arbeite derzeit ein bisschen mit Qt und bin nun auf ein Problem gestoßen, das mich etwas verwirrt.
Und zwar speichere ich einen Text in einer Datei und biete die Möglichkeit diesen dann wieder zu laden und in einem QTextEdit-Fenster anzuzeigen(ist beim Laden dann natürlich auf ReadOnly gesetzt).
Mir ist nun allerdings aufgefallen, dass Gedankenstriche, die sich in der Datei befinden(und in einem normalen Texteditor auch angezeigt werden), im Text-Edit-Widget nur noch als seltsamer, senkrechter, schwarzer Balken angezeigt werden.
Das verwundert mich etwas, da beispielsweise Umlaute völlig korrekt ausgegeben werden.
Mein Code zum Laden der Datei sieht wie folgt aus:

Code: Alles auswählen

 QFile text_file( target_file );
        text_file.open( ::QIODevice::ReadOnly | QIODevice::Text);
        // Komplette Datei lesen
        QString text = text_file.readAll();
        text_file.close();
        // Text teilen in den Text-Teil und den Wort-Teil
        QStringList split_text = text.split( "[WORDS]", QString::SkipEmptyParts );
        // Das [TEXT]-Tag entfernen
        text = split_text[0];
        text.remove("[TEXT]\n");
        ui->load_text_edit->setText( text );
        // Der Text ist somit fertig
        final_text = text;
Das Splitten des Textes ist für euch uninteressant. Ich habe es einfach mal mitkopiert, damit ihr seht, was genau mit dem Text passiert.

Habt ihr eine Idee, was ich falsch gemacht habe oder was ich einstellen muss, damit auch wirklich alle Zeichen ausgegeben werden?

Vielen Dank im Voraus für eure Hilfe
Fred

Verfasst: 23. Dezember 2010 10:31
von padreigh
rtfm ;)
http://doc.qt.nokia.com/stable/qtextedit.html#details
Introduction and Concepts
QTextEdit is an advanced WYSIWYG viewer/editor supporting rich text [SNIPP] QTextEdit can display images, lists and tables[SNIPP]

Using QTextEdit as a Display Widget
QTextEdit can display a large HTML subset, including tables and images.

The text is set or replaced using setHtml() [SNIPP] Text itself can be inserted using the QTextCursor class or using the convenience functions insertHtml(), insertPlainText(), append() or paste().
Das alles läßt wohl darauf schliessen das deine Eingabe nicht 1:1 übernommen wird. setText ist was geerbtes von QLabel was warscheinlich deinen Text als Rich Text interpretiert und die Striche umformt. Die Lösung siehste oben fett markiert ...

Verfasst: 23. Dezember 2010 13:17
von Fred
Vielen Dank für deine schnelle Antwort.

Allerdings hilft auch die insertPlainText-Funktion nicht so recht weiter.
Es wird weiterhin ein fehlerhaftes Zeichen angezeigt.
Es scheint mir irgendwie an der Darstellungsform zu liegen. Denn wenn ich dieses Zeichen kopiere und hier einfüge "–" tata sehe ich wieder einen Gedankenstrich. Bzw. den ASCII Code für einen Gedankenstrich "& # 150"

Irgendeine Idee, was ich noch probieren könnte?

Verfasst: 23. Dezember 2010 13:20
von franzf
Ich denke das ist ein encoding-Problem. QTextStream zum Einlesen verwenden und gut ists.

Verfasst: 23. Dezember 2010 13:22
von Fred
Vielen Dank. Das ist des Rätsels Lösung :)