Seite 1 von 1

Textdarstellung rtf Dokumente in QTextEdit

Verfasst: 11. Mai 2011 10:43
von Marcus Breuer
Guten Morgen,

zum Ausgangsspunkt. Ich habe eine Datei, bspw. mit OpenOffice geschrieben und speichere diese dann im rtf-Format.

Ich möchte nun in einem QTextEdit den Inhalt der Datei auch sauber formatiert, sprich so, wie ich sie geschrieben habe auch wiedergeben können.
Das ist allerdings mein Problem. Ich bekomme dann auch diese ganzen, was ich jetzt mal unwissentlich als "Dokumentzusatzinformationen" bezeichne ausgegeben.

Folgendes habe ich schon probiert,

-setAcceptRichText() für das QTextEdit aufzurufen. => Keine Veränderung
-den Inhalt der geöffneten Datei einem QTextDocument zu übergeben und
dann den Inhalt als Plaintext der einzelnen Blöcke mit QTextBlocks auszulesen => Jetzt bekomme ich nur noch diese Zusatzinformationen.

noch zwei Anmerkungen dazu. Nachdem ich den Pfad zur Datei habe und diese mit open öffne, weise ich einem QString den Inhalt mit readAll() zu.

Zudem sitze ich an einem Mac, falls das der Formate wegen etwas ausmacht. Ich würde prinzipiell aber auch gerne möglichst viele Formate öffnen können, so dass die Formatierung des Texts erhalten bleibt.

Ich bedanke mich schonmal bei Euch. Grüße,
Marcus

Verfasst: 11. Mai 2011 12:20
von franzf
Wie übergibst du denn den Text dem QTextEdit/QTextDocument?

Verfasst: 11. Mai 2011 12:20
von upsala
QTextEdit kann kein RTF-Format

Verfasst: 11. Mai 2011 13:54
von Marcus Breuer
Hi,

danke schonmal für die Erleuchtung:)

@franzf: ich übergebe den gesamten Text der Datei wie folgt:

Code: Alles auswählen

void Hauptfenster::openFile() {
     ui->Ausgabe->clear();
    QString dateipfad = QFileDialog::getOpenFileName(
                this, "Datei auswählen",
                QDir::homePath(), "");

    QFile datei(dateipfad);
    datei.open(QIODevice::ReadOnly | QIODevice::Text);
    ui->Ausgabe->setText(datei.readAll());
    datei.close();
Ich habe weiter probiert den Inhalt dann an ein QTextDocument zu geben mit:

Code: Alles auswählen

 QTextDocument yxz(datei.readAll());
natürlich habe ich dann vorher nichts im QTextEdit ausgeben lassen und probiert mit

Code: Alles auswählen

QTextBlock.begin();
den ersten Block des Dokuments auszulesen. Was leider auch kläglich scheiterte. Ich hatte dazu etwas gelesen, wie *.rtf Dateien aufgebaut sind.
Also entweder ist mein Englisch dafür zu bescheiden, um es richtig verstanden zu haben oder was wahrscheinlich noch dazu kommt, ich steige da nicht hinter.

Was ich letzten Endes möchte ist, bspw. wie in OpenOffice eine Datei, die ich bspw mit Apples TextEdit im rtf-Format gespeichert editiert habe, irgendwie auf dem Bildschirm auch genau so wieder darstellen zu könne, wie es eben in OpenOffice oder Word dann auch funktioniert.

Gibt es eine simple andere Klasse, die ich zur Darstellung von formatiertem Text verwenden kann?

Grüße und Danke,
Marcus

Verfasst: 11. Mai 2011 16:19
von Marcus Breuer
Hallo nochmal,

ich glaube, ich bin fündig geworden auf der Suche nach Weisheit. Ich poste einfach mal den Link, vielleicht hilft es jemandem in Zukunft oder ich werde einfach nochmal schreiben, wenn ich nicht vorher den Laptop aus dem Fenster schmeiße:)


http://doc.qt.nokia.com/latest/richtext-textobject.html


Sonst bin ich aber auch für jede Erklärung oder Anregung dankbar.

Viele Grüße,
Marcus

Verfasst: 12. Mai 2011 08:57
von Marcus Breuer
Guten Morgen,

da ich gestern noch sehr viel Zeit damit verbracht habe, eine geeignete Quelle zu finden, wie ich denn endlich ein RTF Dokument darstellen kann im QTextEdit
und dabei dann doch irgendwann die Hoffnung auf erfolg gestorben ist, war die Lösung dann doch recht einfach.

Vielleicht ist demnächst noch jemand auf der Suche danach, deswegen poste ich es einmal.

Ich habe einfach den Inhalt einer HTML Datei übergeben und siehe da, es funktioniert. HTML kann man sich für die Zwecke denke ich, schnell genug aneignen.

Der minimalistische Code dazu sieht jetzt bei mir wie folgt aus:

Code: Alles auswählen

void MainWindow::openFile() {
    QString file = QFileDialog::getOpenFileName(
                this, " ", QDir::homePath(), " ");

    QFile dat(file);
    dat.open(QIODevice::ReadOnly | QIODevice::Text);
    ui->textEdit->append(dat.readAll());

Viele Grüße,
Marcus