7

I'm looking for the easiest way to display a simple html file (just a long html-formatted text) inside the Qt dialog. Links, if any, should be opened in the external default system browser.

2 Answers 2

16

No need for a QWebView, use a QTextBrowser:

#include <QTextBrowser>
QTextBrowser *tb = new QTextBrowser(this);
tb->setOpenExternalLinks(true);
tb->setHtml(htmlString);

also remember QT += widgets

http://doc.qt.io/qt-5/qtextedit.html#html-prop

http://doc.qt.io/qt-5/qtextbrowser.html#openExternalLinks-prop

Sign up to request clarification or add additional context in comments.

3 Comments

Works. Thanks a lot!
import codecs f=codecs.open(r"D:\filename.html", 'r') tb = QTextBrowser() tb.setOpenExternalLinks(True) tb.setHtml(f.read()) tb.show()
Note QTextBrowser isn't dysplaying a correct html. It displays it as formatted hypertext in SGML-like format with tag system loosely resembling html4. It might be an ill-formed html and it still would be displayed. It can't do most things html browser does.
5

Working example in Python using PySide2:

from PySide2.QtWidgets import QTextBrowser, QApplication


if __name__ == '__main__':
    import sys

    app = QApplication(sys.argv)

    text_browser = QTextBrowser()
    str_html = """
        <!DOCTYPE html>
        <html>
        <body>

        <h1 style="color:blue;">Hello World!</h1>
        <p style="color:red;">Lorem ipsum dolor sit amet.</p>

        </body>
        </html>
        """
    text_browser.setText(str_html)
    text_browser.show()
    text_browser.raise_()

    sys.exit(app.exec_())

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.