Textdarstellung rtf Dokumente in QTextEdit

Alles rund um die Programmierung mit Qt
Antworten
Marcus Breuer
Beiträge: 113
Registriert: 31. März 2011 17:19
Wohnort: Aachen
Kontaktdaten:

Textdarstellung rtf Dokumente in QTextEdit

Beitrag 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
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

Wie übergibst du denn den Text dem QTextEdit/QTextDocument?
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

QTextEdit kann kein RTF-Format
Marcus Breuer
Beiträge: 113
Registriert: 31. März 2011 17:19
Wohnort: Aachen
Kontaktdaten:

Beitrag 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
Marcus Breuer
Beiträge: 113
Registriert: 31. März 2011 17:19
Wohnort: Aachen
Kontaktdaten:

Beitrag 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
Marcus Breuer
Beiträge: 113
Registriert: 31. März 2011 17:19
Wohnort: Aachen
Kontaktdaten:

Beitrag 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
Antworten