// Copyright (C) 2017 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause #include #include #include #include #include #include #include #include #include using namespace Qt::StringLiterals; // Workaround: As of Qt 5.4 QtQuick does not expose QUrl::fromUserInput. class Utils : public QObject { Q_OBJECT public: using QObject::QObject; Q_INVOKABLE static QUrl fromUserInput(const QString &userInput); }; QUrl Utils::fromUserInput(const QString &userInput) { if (!userInput.isEmpty()) { if (const QUrl result = QUrl::fromUserInput(userInput); result.isValid()) return result; } return QUrl::fromUserInput("about:blank"_L1); } #include "main.moc" int main(int argc, char *argv[]) { //! [0] QtWebView::initialize(); QGuiApplication app(argc, argv); //! [0] QGuiApplication::setApplicationDisplayName(QCoreApplication::translate("main", "QtWebView Example")); QCommandLineParser parser; QCoreApplication::setApplicationVersion(QT_VERSION_STR); parser.setApplicationDescription(QGuiApplication::applicationDisplayName()); parser.addHelpOption(); parser.addVersionOption(); parser.addPositionalArgument("url"_L1, "The initial URL to open."_L1); parser.process(QCoreApplication::arguments()); const QString initialUrl = parser.positionalArguments().value(0, "https://www.qt.io/"_L1); QQmlApplicationEngine engine; QQmlContext *context = engine.rootContext(); context->setContextProperty("utils"_L1, new Utils(&engine)); context->setContextProperty("initialUrl"_L1, Utils::fromUserInput(initialUrl)); QRect geometry = QGuiApplication::primaryScreen()->availableGeometry(); if (!QGuiApplication::styleHints()->showIsFullScreen()) { const QSize size = geometry.size() * 4 / 5; const QSize offset = (geometry.size() - size) / 2; const QPoint pos = geometry.topLeft() + QPoint(offset.width(), offset.height()); geometry = QRect(pos, size); } engine.setInitialProperties(QVariantMap{{"x"_L1, geometry.x()}, {"y"_L1, geometry.y()}, {"width"_L1, geometry.width()}, {"height"_L1, geometry.height()}}); engine.load(QUrl("qrc:/main.qml"_L1)); if (engine.rootObjects().isEmpty()) return -1; return app.exec(); }