Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. how to create a sample HTML file using QFIle
Forum Updated to NodeBB v4.3 + New Features

how to create a sample HTML file using QFIle

Scheduled Pinned Locked Moved Solved General and Desktop
28 Posts 5 Posters 6.3k Views 1 Watching
  • 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.
  • J jsulm
    11 Mar 2019, 09:33

    @ManiRon This is not valid HTML.
    And by "code" I mean your C++ code to generate the HTML file...

    M Offline
    M Offline
    ManiRon
    wrote on 11 Mar 2019, 09:40 last edited by
    #19

    @jsulm this code works fine when i use QTextbrowser, But i dont want to use QTextBrowser as it cannot be used inside a QThread

    1 Reply Last reply
    0
    • M ManiRon
      11 Mar 2019, 09:37

      @jsulm

      QString qHostVer = "<b><center><span style =font-size:10pt;>Application</span></center></b>";

      QString qCheckSum = "<b><center><span style =font-size:10pt;>123</span></center></b>";

      QString qTotal= "<b><center><span style =font-size:10pt;>Total</span></center></b>";

      QString qNo= "<b><center><span style =font-size:10pt;>No</span></center></b>";

      QString qTestedBy = "<b><center><span style =font-size:10pt;>Tested By</span></center></b>";

               css1 = "<style type=\"text/css\">";
               css1 += "table.tbl {border-width: 1px;border-style: solid;border-color: black;margin-top: 0px;margin-bottom: 0px;color: black;}";
               css1 += "table.tbl td {padding: 3px;}";
               css1 += "table.tbl th {padding: 3px;font-size: 18px;}";
               css1+="</style>";
               text1 += "<table width=\"100%\" cellspacing=\"0\" class=\"tbl\" style=\"border:1px solid black;border-collapse:collapse;\" align = center >";
               text1 +=("<tr><th>"+qHostVer+"</th><th>"+qCheckSum+"</th><th>"+qTargetCheckSum+"</th>"\
                        "<th>"+qfont+"</th><th>"+qTestedBy+"</th></tr>");
              QString  text1 +=("<tr><td><center><span style =font-size:10pt;>" + 1.00 +"</span></center></td>"\
                        "<td><center><span style =font-size:10pt;>" + 123 +"</span></center></td>"\
                        "<td><center><span style =font-size:10pt;>" +  +"</span></center></td>"\
                        "<td><center><span style =font-size:10pt;>" + o +"</span></center></td>"\
                        "<td><center><span style =font-size:10pt;>"+ +"</span></center></td>");
      

      qRep = css+text;

      QFile qHtmlFile(file path);
      qHtmlFile.write(qRep);
      qHtmlFile.close();

      J Offline
      J Offline
      jsulm
      Lifetime Qt Champion
      wrote on 11 Mar 2019, 09:41 last edited by
      #20

      @ManiRon You're not generating valid HTML

      https://forum.qt.io/topic/113070/qt-code-of-conduct

      M 1 Reply Last reply 11 Mar 2019, 09:43
      0
      • J jsulm
        11 Mar 2019, 09:41

        @ManiRon You're not generating valid HTML

        M Offline
        M Offline
        ManiRon
        wrote on 11 Mar 2019, 09:43 last edited by
        #21

        @jsulm so what change i should make

        J 1 Reply Last reply 11 Mar 2019, 09:45
        0
        • M ManiRon
          11 Mar 2019, 09:43

          @jsulm so what change i should make

          J Offline
          J Offline
          jsulm
          Lifetime Qt Champion
          wrote on 11 Mar 2019, 09:45 last edited by
          #22

          @ManiRon This is how a HTML document should look like:

          <html>
            <head>
             HEADER IF NEEDED 
            </head>
            <body>
              YOUR CONTENT HERE
            </body>
          </html>
          

          https://forum.qt.io/topic/113070/qt-code-of-conduct

          M 1 Reply Last reply 11 Mar 2019, 10:07
          1
          • V Offline
            V Offline
            VRonin
            wrote on 11 Mar 2019, 10:00 last edited by
            #23

            Since you are hard coding stuff anyway, you can use QXmlStreamWriter directly on the QFile device to generate html:

            QFile qHtmlFile("myFile.html");
            if(qHtmlFile.open(QIODevice::WriteOnly){
            QTextStream startDocStream(&qHtmlFile);
            startDocStream << QStringLiteral("<!DOCTYPE html>");
            QXmlStreamWriter htmlWriter(&qHtmlFile);
            htmlWriter.writeStartElement(QStringLiteral("html"));
            htmlWriter.writeAttribute(QStringLiteral("xmlns"),QStringLiteral("http://www.w3.org/1999/xhtml"));
            htmlWriter.writeAttribute(QStringLiteral("lang"),QStringLiteral("en"));
            htmlWriter.writeAttribute(QStringLiteral("xml"),QStringLiteral("lang"),QStringLiteral("en"));
            htmlWriter.writeStartElement(QStringLiteral("head"));
            htmlWriter.writeStartElement(QStringLiteral("meta"));
            htmlWriter.writeAttribute(QStringLiteral("http-equiv"),QStringLiteral("Content-Type"));
            htmlWriter.writeAttribute(QStringLiteral("content"),QStringLiteral("text/html; charset=utf-8"));
            htmlWriter.writeEndElement(); //meta
            htmlWriter.writeStartElement(QStringLiteral("title"));
            htmlWriter.writeCharacters(QStringLiteral("Test Page"));
            htmlWriter.writeEndElement(); //title
            htmlWriter.writeStartElement(QStringLiteral("style"));
            htmlWriter.writeCharacters(QStringLiteral("h1, h2, h3, h4 { color: rgb(83,129,53) } h1 { text-align: center; }"));
            htmlWriter.writeEndElement(); //style
            htmlWriter.writeEndElement(); //head
            htmlWriter.writeStartElement(QStringLiteral("body"));
            htmlWriter.writeStartElement(QStringLiteral("h1"));
            htmlWriter.writeCharacters(QStringLiteral("Test Page"));
            htmlWriter.writeEndElement(); //h1
            htmlWriter.writeStartElement(QStringLiteral("h2"));
            htmlWriter.writeCharacters(QStringLiteral("Lorem"));
            htmlWriter.writeEndElement(); //h2
            htmlWriter.writeStartElement(QStringLiteral("p"));
            htmlWriter.writeCharacters(QStringLiteral("Lorem ipsum dolor sit amet, consectetur adipiscing elit."));
            htmlWriter.writeEndElement(); //p
            htmlWriter.writeEndElement(); //body
            htmlWriter.writeEndElement(); //html
            }
            

            "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
            ~Napoleon Bonaparte

            On a crusade to banish setIndexWidget() from the holy land of Qt

            M 2 Replies Last reply 11 Mar 2019, 10:08
            5
            • J jsulm
              11 Mar 2019, 09:45

              @ManiRon This is how a HTML document should look like:

              <html>
                <head>
                 HEADER IF NEEDED 
                </head>
                <body>
                  YOUR CONTENT HERE
                </body>
              </html>
              
              M Offline
              M Offline
              ManiRon
              wrote on 11 Mar 2019, 10:07 last edited by
              #24

              @jsulm I have not defined the html tag but still it was generating the html file correctly but when i removed the QTextbrowser , still it was generating correctly but the internal borders of the table is only the major missing.

              1 Reply Last reply
              0
              • V VRonin
                11 Mar 2019, 10:00

                Since you are hard coding stuff anyway, you can use QXmlStreamWriter directly on the QFile device to generate html:

                QFile qHtmlFile("myFile.html");
                if(qHtmlFile.open(QIODevice::WriteOnly){
                QTextStream startDocStream(&qHtmlFile);
                startDocStream << QStringLiteral("<!DOCTYPE html>");
                QXmlStreamWriter htmlWriter(&qHtmlFile);
                htmlWriter.writeStartElement(QStringLiteral("html"));
                htmlWriter.writeAttribute(QStringLiteral("xmlns"),QStringLiteral("http://www.w3.org/1999/xhtml"));
                htmlWriter.writeAttribute(QStringLiteral("lang"),QStringLiteral("en"));
                htmlWriter.writeAttribute(QStringLiteral("xml"),QStringLiteral("lang"),QStringLiteral("en"));
                htmlWriter.writeStartElement(QStringLiteral("head"));
                htmlWriter.writeStartElement(QStringLiteral("meta"));
                htmlWriter.writeAttribute(QStringLiteral("http-equiv"),QStringLiteral("Content-Type"));
                htmlWriter.writeAttribute(QStringLiteral("content"),QStringLiteral("text/html; charset=utf-8"));
                htmlWriter.writeEndElement(); //meta
                htmlWriter.writeStartElement(QStringLiteral("title"));
                htmlWriter.writeCharacters(QStringLiteral("Test Page"));
                htmlWriter.writeEndElement(); //title
                htmlWriter.writeStartElement(QStringLiteral("style"));
                htmlWriter.writeCharacters(QStringLiteral("h1, h2, h3, h4 { color: rgb(83,129,53) } h1 { text-align: center; }"));
                htmlWriter.writeEndElement(); //style
                htmlWriter.writeEndElement(); //head
                htmlWriter.writeStartElement(QStringLiteral("body"));
                htmlWriter.writeStartElement(QStringLiteral("h1"));
                htmlWriter.writeCharacters(QStringLiteral("Test Page"));
                htmlWriter.writeEndElement(); //h1
                htmlWriter.writeStartElement(QStringLiteral("h2"));
                htmlWriter.writeCharacters(QStringLiteral("Lorem"));
                htmlWriter.writeEndElement(); //h2
                htmlWriter.writeStartElement(QStringLiteral("p"));
                htmlWriter.writeCharacters(QStringLiteral("Lorem ipsum dolor sit amet, consectetur adipiscing elit."));
                htmlWriter.writeEndElement(); //p
                htmlWriter.writeEndElement(); //body
                htmlWriter.writeEndElement(); //html
                }
                
                M Offline
                M Offline
                ManiRon
                wrote on 11 Mar 2019, 10:08 last edited by
                #25

                @VRonin this might make it a little tough i think so sir?

                1 Reply Last reply
                0
                • V VRonin
                  11 Mar 2019, 10:00

                  Since you are hard coding stuff anyway, you can use QXmlStreamWriter directly on the QFile device to generate html:

                  QFile qHtmlFile("myFile.html");
                  if(qHtmlFile.open(QIODevice::WriteOnly){
                  QTextStream startDocStream(&qHtmlFile);
                  startDocStream << QStringLiteral("<!DOCTYPE html>");
                  QXmlStreamWriter htmlWriter(&qHtmlFile);
                  htmlWriter.writeStartElement(QStringLiteral("html"));
                  htmlWriter.writeAttribute(QStringLiteral("xmlns"),QStringLiteral("http://www.w3.org/1999/xhtml"));
                  htmlWriter.writeAttribute(QStringLiteral("lang"),QStringLiteral("en"));
                  htmlWriter.writeAttribute(QStringLiteral("xml"),QStringLiteral("lang"),QStringLiteral("en"));
                  htmlWriter.writeStartElement(QStringLiteral("head"));
                  htmlWriter.writeStartElement(QStringLiteral("meta"));
                  htmlWriter.writeAttribute(QStringLiteral("http-equiv"),QStringLiteral("Content-Type"));
                  htmlWriter.writeAttribute(QStringLiteral("content"),QStringLiteral("text/html; charset=utf-8"));
                  htmlWriter.writeEndElement(); //meta
                  htmlWriter.writeStartElement(QStringLiteral("title"));
                  htmlWriter.writeCharacters(QStringLiteral("Test Page"));
                  htmlWriter.writeEndElement(); //title
                  htmlWriter.writeStartElement(QStringLiteral("style"));
                  htmlWriter.writeCharacters(QStringLiteral("h1, h2, h3, h4 { color: rgb(83,129,53) } h1 { text-align: center; }"));
                  htmlWriter.writeEndElement(); //style
                  htmlWriter.writeEndElement(); //head
                  htmlWriter.writeStartElement(QStringLiteral("body"));
                  htmlWriter.writeStartElement(QStringLiteral("h1"));
                  htmlWriter.writeCharacters(QStringLiteral("Test Page"));
                  htmlWriter.writeEndElement(); //h1
                  htmlWriter.writeStartElement(QStringLiteral("h2"));
                  htmlWriter.writeCharacters(QStringLiteral("Lorem"));
                  htmlWriter.writeEndElement(); //h2
                  htmlWriter.writeStartElement(QStringLiteral("p"));
                  htmlWriter.writeCharacters(QStringLiteral("Lorem ipsum dolor sit amet, consectetur adipiscing elit."));
                  htmlWriter.writeEndElement(); //p
                  htmlWriter.writeEndElement(); //body
                  htmlWriter.writeEndElement(); //html
                  }
                  
                  M Offline
                  M Offline
                  ManiRon
                  wrote on 11 Mar 2019, 10:28 last edited by ManiRon 3 Nov 2019, 10:32
                  #26

                  @VRonin @jsulm any other better way if possible with the same way in which i have done

                  1 Reply Last reply
                  0
                  • S Offline
                    S Offline
                    SGaist
                    Lifetime Qt Champion
                    wrote on 11 Mar 2019, 22:45 last edited by
                    #27

                    Did you try to compare the HTML you generated with QTextBrowser and the one you are generating now ?

                    Interested in AI ? www.idiap.ch
                    Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                    M 1 Reply Last reply 13 Mar 2019, 07:03
                    1
                    • S SGaist
                      11 Mar 2019, 22:45

                      Did you try to compare the HTML you generated with QTextBrowser and the one you are generating now ?

                      M Offline
                      M Offline
                      ManiRon
                      wrote on 13 Mar 2019, 07:03 last edited by
                      #28

                      @SGaist it worked when i added "table.tbl td {border: 2px solid black;}, table.tbl th {border: 2px solid black;}" these two line .

                      1 Reply Last reply
                      0

                      28/28

                      13 Mar 2019, 07:03

                      • Login

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