Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. German
  4. Probleme mit QTextEdit und QMargin
QtWS25 Last Chance

Probleme mit QTextEdit und QMargin

Scheduled Pinned Locked Moved Unsolved German
qtexteditmarginpagesize
7 Posts 2 Posters 2.5k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • ? Offline
    ? Offline
    A Former User
    wrote on 31 Mar 2018, 06:59 last edited by
    #1

    Moin alle zusammen!
    Ich habe leider ein größeres Problem, aber ich denke, dass wir das hinbekommen.

    Zuerst einmal die Beschreibung:
    Ich entwickle gerade einen TextEditor mit QTextEdit. Und dieser soll QMargin, PageSize (A4,A5, etc.) und die Position von PageNumber (oben mittig, unten link, etc.) mit in einer .htm Datei speichern. In dieser .htm Datei wird auch der Content vom QTextEdit gespeichert. Soweit alles klar?
    PageSize, PageNumber werden in einer extra Datei namens "PagesTextEdit.cpp" definiert. Denn diese Datei speichert und lädt das Dokument. Nun habe ich 2 Funktionen eingebaut: SaveExtra(); und LoadExtra();

    SaveExtra:

    void PagesTextEdit::SaveExtra(QDataStream& out ) {
        QMarginsF t = m_pageMetrics.mmPageMargins();
        out << t;
        out << m_pageMetrics.mmPageSize().height();
        out << m_pageMetrics.mmPageSize().width();
    
    
    
    };
    

    In dieser Funktion wieder schon versucht, QMargin zu speichern, klappt auch super. Zusätzlich soll hier aber auch noch PageSize und PageNumber (Position) gespeichert werden.

    LoadExtra:

    void PagesTextEdit::LoadExtra(QDataStream& in ) {
        QMarginsF PageMargin;
    
        in >> PageMargin;
        setPageMargins(PageMargin);
    
        QMarginsF t;
        int pageheight;
        int pagewidth;
        in >> t;
        in >> pageheight;
        in >> pagewidth;
        m_pageMetrics.m_mmPageMargins = t;
        m_pageMetrics.m_mmPageSize = QSize(pagewidth, pageheight);
    
    };
    

    Hier wird QMargin geladen. Das Problem ist, dass zwar das Margin stimmt, aber kein Inhalt, wie Texte oder BIlder angezeigt werden. AUch hier soll zusätzlich noch PageSize und PageNumber (Position) gespeichert werden.

    Speicher-Funktion:

    void PagesTextEdit::saveUnderDocument() {
      if (fileName.isEmpty()) {
        fileName = QFileDialog::getSaveFileName(this, tr("Speichern unter..."),
                                                QString("Dokument.htm"), tr("TextPad 1.0 (*.htm);;"));
        QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation);
        if (fileName.isEmpty())
          return;
      }
    
      QFile file(fileName, this);
    
      if (!file.open(QIODevice::WriteOnly)) {
        qDebug() << "Fehler beim Speichern der Datei";
      }
    
      QProgressDialog progress("Speichern - Fortschritt", "Abbrechen", 0, 10);
      progress.setWindowTitle("Speichern");
      progress.setWindowIcon(QIcon(":/ic_save_black_24dp.png"));
      progress.show();
      for (int i = 0; i < 10; i++) {
        progress.setValue(i);
        if (progress.wasCanceled())
          break;
        QTime saveTime = QTime::currentTime().addMSecs(40);
        while (QTime::currentTime() < saveTime)
          QCoreApplication::processEvents(QEventLoop::AllEvents, 100);
      }
      progress.setValue(1);
    
    
      QDataStream  out(&file);
      SaveExtra(out);
      out << encodeHtml(toHtml());
      file.close();
    }
    

    SaveExtra(out), deswegen SaveExtra...

    Öffnen-Funktion:

    void PagesTextEdit::loadDocument() {
      QString fileName = QFileDialog::getOpenFileName(this, tr("Öffnen..."),
                                                      QString(), tr("TextPad 1.0 (*.htm);;"));
    
      if (fileName.isEmpty())
        return;
    
      QFile file(fileName, this);
    
    
    
      if (!file.open(QIODevice::ReadOnly)) {
        qDebug() << "Fehler beim Öffnen der Datei";
        return;
      }
    
      QProgressDialog progress("Öffnen - Fortschritt", "Abbrechen", 0, 10);
      progress.setWindowTitle("Öffnen");
      progress.setWindowIcon(QIcon(":/ic_folder_open_black_24dp_1x.png"));
      progress.show();
      for (int i = 0; i < 10; i++) {
        progress.setValue(i);
        if (progress.wasCanceled())
          break;
        QTime saveTime = QTime::currentTime().addMSecs(40);
        while (QTime::currentTime() < saveTime)
          QCoreApplication::processEvents(QEventLoop::AllEvents, 100);
      }
      progress.setValue(1);
    
    
      if (document()) {
        document()->clear();
      }
    
      QString html;
      QDataStream  in(&file);
      LoadExtra(in);
      in >> html;
      document()->setHtml(html); // file.readAll()
      file.close();
    }
    

    LoadExtra(in), deswegen LoadExtra...

    Hier ist der Link zu meinem Projekt, um ein Verständnis zu bekommen, was sich auf wen bezieht und wo deklariert ist. Das ganze hier spielt sich in der Datei "PagesTextEdit.cpp" ab.
    https://1drv.ms/f/s!AqaeHLtTIsoIhPkuv84DQOgVsHUISQ

    Ich bitte Euch, keinen Unfug mit dem Projekt zu machen :)

    Ich hoffe, diese Informationen helfen.

    LG

    1 Reply Last reply
    0
  • ? Offline
    ? Offline
    A Former User
    wrote on 2 Apr 2018, 05:20 last edited by
    #2

    Kann denn keiner etwas dazu sagen?

    1 Reply Last reply
    0
  • C Online
    C Online
    Christian Ehrlicher Lifetime Qt Champion
    wrote on 2 Apr 2018, 15:01 last edited by Christian Ehrlicher 4 Feb 2018, 15:04
    #3

    Ich würde einfach mal schauen was in 'html' drin steht. Außerdem benutzt du beim Speichern noch 'encodeHtml()' - was auch immer das mit dem html anstellt.
    Und was soll das ganze mit den 40ms Wartezeit?

    /edit: Und SaveExtra speichert 3 Werte, LoadExtra versucht hingegen 4 Werte zu laden...

    Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
    Visit the Qt Academy at https://academy.qt.io/catalog

    1 Reply Last reply
    1
  • ? Offline
    ? Offline
    A Former User
    wrote on 2 Apr 2018, 18:29 last edited by
    #4

    Okay, und wie schaue ich in html rein?

    1 Reply Last reply
    0
  • C Online
    C Online
    Christian Ehrlicher Lifetime Qt Champion
    wrote on 2 Apr 2018, 20:46 last edited by
    #5

    Debugger, qDebug(), QMessageBox,, QPlaintTextEdit, Speichern in einer Datei und anschauen mit TextEditor.
    Und wie ich schon sagte - beim Schreiben benutzt Du encodeHtml() - was auch immer diese Funktion macht. Beim Einlesen übergibst Du diesen String direkt an QTextEdit...

    Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
    Visit the Qt Academy at https://academy.qt.io/catalog

    1 Reply Last reply
    1
  • ? Offline
    ? Offline
    A Former User
    wrote on 2 Apr 2018, 20:58 last edited by
    #6
    QString encodeHtml(QString html) {
      html = html.replace("ä", "&auml;");
      html = html.replace("Ä", "&Auml;");
      html = html.replace("ö", "&ouml;");
      html = html.replace("Ö", "&Ouml;");
      html = html.replace("ü", "&uuml;");
      html = html.replace("Ü", "&Uuml;");
      html = html.replace("ß", "&szlig");
      return html;
    }
    

    Das ist encodeHtml

    1 Reply Last reply
    0
  • C Online
    C Online
    Christian Ehrlicher Lifetime Qt Champion
    wrote on 3 Apr 2018, 08:50 last edited by
    #7

    QTextEdit::toHtml() gibt schon gültiges HTML zurück - nicht nötig da noch einmal was zu konvertieren (was eh nicht mehr vorhanden ist). ß wird übrigens falsch konvertiert...

    Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
    Visit the Qt Academy at https://academy.qt.io/catalog

    1 Reply Last reply
    0

5/7

2 Apr 2018, 20:46

topic:navigator.unread, 2
  • Login

  • Login or register to search.
5 out of 7
  • First post
    5/7
    Last post
0
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved