WebEngine Widgets Minimal Example

Displays a web page using Qt WebEngine Widgets.

WebEngine Widgets Minimal Example demonstrates how to use QWebEngineView to render a web page. It shows the minimum amount of code needed to load and display an HTML page, and can be used as a basis for further experimentation.

Running the Example

To run the example from Qt Creator, open the Welcome mode and select the example from Examples. For more information, visit Building and Running an Example.

The Code

We first define a commandLineUrlArgument function that returns the URL to open. This is either the first positional argument given on the command line, or https://www.qt.io as a fallback.

 #include <QApplication>
 #include <QWebEngineView>

 QUrl commandLineUrlArgument()
 {
     const QStringList args = QCoreApplication::arguments();
     for (const QString &arg : args.mid(1)) {
         if (!arg.startsWith(QLatin1Char('-')))
             return QUrl::fromUserInput(arg);
     }
     return QUrl(QStringLiteral("https://www.qt.io"));
 }

In the main function we first set the QCoreApplication::organizationName property. This affects the locations where Qt WebEngine stores persistent and cached data (see also QWebEngineProfile::cachePath and QWebEngineProfile::persistentStoragePath).

We also set the Qt::AA_EnableHighDpiScaling attribute. This lets the web view automatically scale on high-dpi displays.

Next, we instantiate a QApplication and a QWebEngineView. The URL to load is taken from commandLineUrlArgument and loaded by calling QWebEngineView::setUrl. The view widget is given a reasonable default size, and shown. Finally, QApplication::exec() launches the main event loop.

 int main(int argc, char *argv[])
 {
     QCoreApplication::setOrganizationName("QtExamples");
     QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
     QApplication app(argc, argv);

     QWebEngineView view;
     view.setUrl(commandLineUrlArgument());
     view.resize(1024, 750);
     view.show();

     return app.exec();
 }

Requirements

The example requires a working internet connection to render the Qt Homepage. An optional system proxy should be picked up automatically. However, for proxies that require a username or password, you need to connect to QWebEnginePage::proxyAuthenticationRequired.

Qt WebEngine Widgets uses the Qt Quick Scene Graph to compose the page. Therefore, OpenGL support is required.

Example project @ code.qt.io