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.4k 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.
  • S Offline
    S Offline
    SGaist
    Lifetime Qt Champion
    wrote on 11 Mar 2019, 07:29 last edited by
    #13

    Hi,

    Use of QFile:

    • Create QFile variable
    • Call open
    • Check that open was successful
    • Call write
    • Close file

    Done

    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 11 Mar 2019, 09:15
    4
    • S SGaist
      11 Mar 2019, 07:29

      Hi,

      Use of QFile:

      • Create QFile variable
      • Call open
      • Check that open was successful
      • Call write
      • Close file

      Done

      M Offline
      M Offline
      ManiRon
      wrote on 11 Mar 2019, 09:15 last edited by ManiRon 3 Nov 2019, 09:29
      #14

      @SGaist yes i tried it, I create a table using HTML . If i do as mentioned by you the table doesnt has the column seperator line .0_1552296582698_Untitled.jpg

      J 1 Reply Last reply 11 Mar 2019, 09:30
      0
      • M ManiRon
        11 Mar 2019, 09:15

        @SGaist yes i tried it, I create a table using HTML . If i do as mentioned by you the table doesnt has the column seperator line .0_1552296582698_Untitled.jpg

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

        @ManiRon Can you please show the code you're using now? And the content of the file you're generating (the text, not pictures)?

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

        M 1 Reply Last reply 11 Mar 2019, 09:31
        0
        • J jsulm
          11 Mar 2019, 09:30

          @ManiRon Can you please show the code you're using now? And the content of the file you're generating (the text, not pictures)?

          M Offline
          M Offline
          ManiRon
          wrote on 11 Mar 2019, 09:31 last edited by
          #16

          @jsulm

          this whole code will be stored in a QString and this i am printing

          <article><div align="right"></div><header><h1><center><font color="midnightblue"></font></center></h1><h2><font color="dimgray"></font></h2></header></article><table border="1" style="background-color:ghostwhite;border:1px dotted black;width:80%;border-collapse:collapse;"><tr style="background-color:gainsboro;color:black;"></table><style type="text/css">table.tbl {border-width: 1px;border-style: solid;border-color: black;margin-top: 0px;margin-bottom: 0px;color: black;}table.tbl td {padding: 3px;}table.tbl th {padding: 3px;font-size: 18px;}</style><table width="100%" cellspacing="0" class="tbl" style="border:1px solid black;border-collapse:collapse;" align = center ><tr><th><b><center><span style =font-size:10pt;>Application</span></center></b></th><th><b><center><span style =font-size:10pt;>Check Sum</span></center></b></th><th><b><center><span style =font-size:10pt;>Total</span></center></b></th><th><b><center><span style =font-size:10pt;>No</span></center></b></th><th><b><center><span style =font-size:10pt;>Tested By</span></center></b></th><th><b><center><span style =font-size:10pt;></span></center></b></th><th><b><center><span style =font-size:10pt;></span></center></b></th></tr><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;></span></center></td><td><center><span style =font-size:10pt;></span></center></td><td><center><span style =font-size:10pt;></span></center></td><td><center><span style =font-size:10pt;></span></center></td></tr></table><br><br><br><style type="text/css">table.tbl1 {border-width: 1px;border-style: solid;border-color: black;margin-top: 0px;margin-bottom: 0px;color: black;}table.tbl1 td {padding: 3px;}table.tbl1 th {padding: 3px;font-size: 18px;}</style><table width="100%" cellspacing="0" class="tbl1"><tr><th>Name</th><th>Data</th><th>data</th><th>Test Result</th></tr><tr><td><b><span style =font-size:10pt;>sss</span></b></td><td>Data1</td><td>Data2</td><td><b><span style =font-size:10pt;><font color=Green>PASS</font></span></b></td></tr></table><br><br><br><br><hr><br><br>

          J 1 Reply Last reply 11 Mar 2019, 09:33
          0
          • M ManiRon
            11 Mar 2019, 09:31

            @jsulm

            this whole code will be stored in a QString and this i am printing

            <article><div align="right"></div><header><h1><center><font color="midnightblue"></font></center></h1><h2><font color="dimgray"></font></h2></header></article><table border="1" style="background-color:ghostwhite;border:1px dotted black;width:80%;border-collapse:collapse;"><tr style="background-color:gainsboro;color:black;"></table><style type="text/css">table.tbl {border-width: 1px;border-style: solid;border-color: black;margin-top: 0px;margin-bottom: 0px;color: black;}table.tbl td {padding: 3px;}table.tbl th {padding: 3px;font-size: 18px;}</style><table width="100%" cellspacing="0" class="tbl" style="border:1px solid black;border-collapse:collapse;" align = center ><tr><th><b><center><span style =font-size:10pt;>Application</span></center></b></th><th><b><center><span style =font-size:10pt;>Check Sum</span></center></b></th><th><b><center><span style =font-size:10pt;>Total</span></center></b></th><th><b><center><span style =font-size:10pt;>No</span></center></b></th><th><b><center><span style =font-size:10pt;>Tested By</span></center></b></th><th><b><center><span style =font-size:10pt;></span></center></b></th><th><b><center><span style =font-size:10pt;></span></center></b></th></tr><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;></span></center></td><td><center><span style =font-size:10pt;></span></center></td><td><center><span style =font-size:10pt;></span></center></td><td><center><span style =font-size:10pt;></span></center></td></tr></table><br><br><br><style type="text/css">table.tbl1 {border-width: 1px;border-style: solid;border-color: black;margin-top: 0px;margin-bottom: 0px;color: black;}table.tbl1 td {padding: 3px;}table.tbl1 th {padding: 3px;font-size: 18px;}</style><table width="100%" cellspacing="0" class="tbl1"><tr><th>Name</th><th>Data</th><th>data</th><th>Test Result</th></tr><tr><td><b><span style =font-size:10pt;>sss</span></b></td><td>Data1</td><td>Data2</td><td><b><span style =font-size:10pt;><font color=Green>PASS</font></span></b></td></tr></table><br><br><br><br><hr><br><br>

            J Offline
            J Offline
            jsulm
            Lifetime Qt Champion
            wrote on 11 Mar 2019, 09:33 last edited by jsulm 3 Nov 2019, 09:34
            #17

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

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

            M 2 Replies Last reply 11 Mar 2019, 09:37
            0
            • 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:37 last edited by ManiRon 3 Nov 2019, 09:39
              #18

              @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 1 Reply Last reply 11 Mar 2019, 09:41
              0
              • 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

                                  22/28

                                  11 Mar 2019, 09:45

                                  • Login

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