Qt WebEngine 特徴
Qt WebEngine は以下の機能をサポートしています:
- オーディオおよびビデオコーデック
- ウェブエンジンドライバ
- Chromium DevTools
- クライアント証明書
- カスタムスキーム
- ドラッグ&ドロップ
- ファビコン
- フルスクリーン
- ハードウェアアクセラレーション
- HTML5 DRM
- HTML5 ジオロケーション
- HTML5 ウェブソケット
- HTTP/2 プロトコル
- ローカル・ストレージ
- ネイティブ・ダイアログ
- PDFファイル閲覧
- ページライフサイクルAPI
- PDFへの印刷
- プロセスモデル
- スペルチェッカー
- タッチ
- ソースの表示
- ウェブ通知
- WebGL
- ウェブRTC
オーディオおよびビデオコーデック
Qt WebEngine は、H.264 や MPEG layer-3 (MP3) など、必要な独自のオーディオおよびビデオコーデックが有効になっている場合に限り、MPEG-4 Part 14 (MP4) ファイル形式をサポートします。独自コーデックは、Qt 構成時に ツールに以下のオプションを渡すことで有効にすることができます:configure
-webengine-proprietary-codecs
例えば、Qt をトップレベルでビルドするために Qt を設定するときに、以下のオプションを渡すことができます:
configure -webengine-proprietary-codecs
詳細については、Qtの設定オプションを参照してください。
cmakeを使用してQt WebEngine モジュールだけをビルドする場合、以下のコマンドを使用して設定とビルドを行うことができます(この例では、Qt WebEngine のソースコードはC:\qt\qtwebengine
にあります):
qt-configure-module C:\qt\qtwebengine -webengine-proprietary-codecs cmake --build . --parallel
警告: 警告: プロプライエタリなコーデックライブラリを配布する場合は、それらのライセンスを取得する必要があります。
FFmpegは、オーディオとビデオを記録、変換、ストリーミングするためのクロスプラットフォームソリューションです。FFmpegは複数のコーデックで使用するように設定でき、コーデックライブラリを配布する際にライセンスの問題が発生します。いくつかのコーデックについては、OpenH264のようなオープンソースの実装が利用可能です。
WebEngineDriver
WebEngineDriverを使用すると、ブラウザ間でWebサイトのテストを自動化できます。WebEngineDriverはChromeDriverをベースにしており、同じように使用できます。ChromeDriverとその使用方法についての詳細は、ChromeDriverユーザーサイトをご覧ください。
WebEngineDriverは、Qt WebEngine ベースのブラウザに接続できるように、ChromeDriverと比較して若干の変更が加えられています。Simple Browserや Nano Browserなど、Qt WebEngine のサンプルブラウザと互換性があります。
ブラウザの自動化はSelenium WebDriverのようなWebDriverクライアントを通してスクリプト化されます。例えば、WebEngineDriverはSelenium WebDriverのPython言語バインディングで使用できます:
from selenium import webdriver from selenium.webdriver.chrome.service import Service service = Service(executable_path='QTDIR/libexec/webenginedriver') options = webdriver.ChromeOptions() options.binary_location = 'path/to/browser_binary' driver = webdriver.Chrome(service=service, options=options) driver.get("http://www.google.com/") driver.quit()
この例では
executable_path
には WebEngineDriver のバイナリパスを設定します。QTDIR
は Qt がインストールされているディレクトリです。options.binary_location
をブラウザのバイナリパスに設定する必要があります。
注: Windowsの場合:executable_path='QTDIR/bin/webenginedriver.exe'
スクリプトを実行する前に、QTWEBENGINE_REMOTE_DEBUGGING
環境変数を設定する必要があります。その値は、ブラウザと WebEngineDriver の両方が互いに通信するために使用するポート番号です。
export QTWEBENGINE_REMOTE_DEBUGGING=12345
スクリプトを実行すると、指定したウェブブラウザが開き、Googleのウェブサイトがロードされます。
WebEngineDriverは、リモートデバッグポートが設定された状態で起動された場合、すでに実行されているブラウザにアタッチすることもできます。options.debugger_address
は、スクリプト内でリモートデバッグアドレスに設定する必要があります:
options.debugger_address = 'localhost:12345'
この場合、ブラウザはすでに実行されているため、options.binary_location
を設定すべきではありません。options.debugger_address
が設定されている場合、環境変数QTWEBENGINE_REMOTE_DEBUGGING
は WebEngineDriver によって使用されません。
注: WebEngineDriver は、Qt WebEngine が使用しているのと同じバージョンの Chromium でビルドする必要があります。
Chromium DevTools
Chromium DevTools は、ウェブコンテンツのレイアウトやパフォーマンスの問題を検査し、デバッグする機能を提供します。
この機能は、コマンドラインオプション--remote-debugging-port=[your-port]
でQt WebEngine アプリケーションを起動するか、環境変数QTWEBENGINE_REMOTE_DEBUGGING
を設定し、Chromium ベースのブラウザ(Simple BrowserやNano Browser など)を使用してhttp://localhost:[your-port]
に接続することでテストできます。
注: WebEngine コマンドラインオプションは、--webEngineArgs
オプションの後に指定する必要があります。このオプションは、ユーザーのアプリケーション固有のオプションとWebEngine のオプションを分離するために使用されます。
--webEngineArgs --remote-debugging-port=5000
リモートデバッグ中のWebSocketエラーを回避するには、追加のコマンドライン引数--remote-allow-origins=<origin>[,<origin>, ...]
を追加します。<origin>
はリクエストのオリジンを指します。すべてのオリジンからの接続を許可するには、--remote-allow-origins=*
を使用する。何も指定しない場合、Qt WebEngine はリモートデバッグが有効になっているときにコマンドライン引数に--remote-allow-origins=*
を追加し、すべてのオリジンからのリクエストを許可します。
Chromium DevToolsページをアプリケーション内に表示することもできます。これを設定するには、this
ページに暗黙のうちに DevTools をロードするQWebEnginePage::setInspectedPage() を検査対象のページに呼び出すか、QWebEnginePage::setDevToolsPage() をthis
ページに呼び出します。
それぞれのQMLプロパティはWebEngineView.devToolsView とWebEngineView.inspectedView です。
詳しくは、Qt WebEngine デバッグとプロファイリングを参照してください。
クライアント証明書
いくつかのウェブサーバー、特に多くのイントラネットサイトでは、クライアント証明書と呼ばれる証明書でクライアントを認証する必要があります。Qt WebEngine 、macOSとWindowsではシステム設定にインストールされたクライアント証明書を、LinuxではNSSデータベースにインストールされたクライアント証明書を読み取ります。証明書は、pk12util
ツールを使用して NSS データベースにインストールできます。
デフォルトでは、Qt WebEngine 、サーバーにクライアント証明書を提供しません。これは、そうすることでユーザーを一意に識別し、プライバシーの期待に反する可能性があるためです。
クライアント証明書のサポートを有効にするには、アプリケーションがQWebEnginePage::selectClientCertificate またはWebEngineView.selectClientCertificate シグナルをリッスンし、提供される証明書の1つを選択する必要があります。信頼できない Web サイトにナビゲートできるアプリケーションでは、リモート・サーバにユーザーを一意に識別する前に、常にユーザーに選択肢を与えることを推奨します。
システム設定に保存されているクライアント証明書に加えて、Qt WebEngine はインメモリ・ストアも提供している。QWebEngineClientCertificateStore インスタンスはQWebEngineProfile::clientCertificateStore() メソッドで取得できる。アプリケーションはこのクラスを使用して、QWebEngineClientCertificateStore::add ()コールで新しい証明書を追加できます。selectClientCertificate
呼び出しの間、Qt WebEngine は、システムおよびインメモリに保存されたクライアント証明書の両方を一覧表示することに注意してください。
実装の詳細については、クライアント証明書の例も参照してください。
カスタム・スキーム
Qt WebEngine を使用すると、アプリケーションは、特殊なセキュリティ・ポリシーとトランスポート・メカニズムを持つ独自のカスタムURLスキームを定義できるようになります。
カスタムスキームは、通常のウェブセキュリティポリシーを持つ代替ネットワークプロトコル、ユーザーインターフェイスコンポーネントやデバッグ情報を表示するための特権的な内部スキーム、特別な制限を持つサンドボックススキームなどを実装するために使用できます。
詳しくはQWebEngineUrlScheme とQWebEngineUrlSchemeHandler を参照してください。
ドラッグ&ドロップ
Qt WebEngine はHTML5のドラッグ&ドロップをサポートしています。
この機能は、シンプル ブラウザまたはナノ ブラウザで HTML5 Demos - Drag and Drop、HTML5 Demos - Simple Drag and Drop、HTML5 Demos - Drag and Drop, Automatic Upload などの HTML5 ドラッグ アンド ドロップ デモを開いてテストできます。
ブラウザへのファイルのドラッグは、実際にはHTML5の一部ではありませんが、サポートされています。HTML5 Demos - File APIを開くことでテストできます。
この機能のサポートは Qt 5.7.0 で追加されました。
ファビコン
Qt WebEngine ウェブサイトの URL アイコンであるファビコンをサポートしています。各アイコンは ごとに内部データベースに保存され、 () 呼び出しまたは現在読み込まれているコンテンツの プロパティを使用してアクセスできます。QWebEngineProfile QWebEnginePage::icon WebEngineView.icon
さらにQt WebEngine は、内部プロファイルのデータベースにすでに保存されているアイコンにアクセスするためのAPIを提供します。
注意: アイコンデータベースは、Off-the-Recordプロファイルでは利用できません。
QMLファビコン処理
アイコンにアクセスするために、QQuickImageProvider
が登録されています。このプロバイダには、スキームが "image:"、ホストが "favicon "の特別なURLでアクセスすることができます。
Image { source: "image://favicon/url" }
url
はファビコンのURLにすることができます:
Image { source: "image://favicon/https://www.qt.io/hubfs/2016_Qt_Logo/qt_logo_green_rgb_16x16.png" }
また、url
は、そのアイコンにアクセスするためのページURLにすることもできます:
Image { source: "image://favicon/https://www.qt.io/" }
複数のアイコンが利用可能な場合、Image::sourceSize プロパティを指定して、希望するサイズのアイコンを選択することができます。Image::sourceSize が指定されていないか 0 の場合、利用可能な最大のアイコンが選択されます。
画像プロバイダは、要求されたアイコンを既存のWebEngineView インスタンスから検索します。まず、現在表示されているアイコンに一致するものを探します。一致するものが見つからなかった場合は、データベースからアイコンを要求します。各プロファイルは独自のアイコンデータベースを持ち、永続ストレージに保存されるため、保存されたアイコンはネットワーク接続なしでもアクセスできます。アイコンをデータベースに保存するには、事前に読み込んでおく必要があります。
C++ファビコン処理
ユーザーは、QWebEngineProfile::requestIconForPageURL() またはQWebEngineProfile::requestIconForIconURL() コールを使用して、QWebEngineProfile ごとにロード済みのコンテンツからアイコンを要求できます。プロファイルのデータベースは永続ストレージに保存され、ネットワーク接続なしでアクセスできることに注意してください。
フルスクリーン
Qt WebEngine は、フルスクリーンモードでのウェブコンテンツの表示をサポートしています。詳細については、 、 、 、 を参照してください。WebEngineSettings.fullscreenSupportEnabled WebEngineView.fullScreenRequested QWebEngineSettings::FullScreenSupportEnabled QWebEnginePage::fullScreenRequested
この機能は、Video PlayerまたはNano Browser で YouTube のビデオを再生し、フルスクリーンアイコンをクリックしてフルスクリーンモードにすることでテストできます。
この機能のサポートは Qt 5.6.0 で追加されました。
ハードウェア アクセラレーション
QtWebEngine は、コンテンツのレンダリングにハードウェアアクセラレーションを使用しようとします。これは、 または API を使用して GPU 上でレンダリング呼び出しを実行します。フォールバックとして、ハードウェアが必要なOpenGL機能のセットを満たさない場合はいつでも、ソフトウェアレンダリングが使用されます。ユーザーは、 の内部ページをロードすることで、現在のハードウェア・アクセラレーションの状態を確認できます。さらに、 スイッチを使用して、 で明示的にアクセラレーションを無効にすることもできます。たとえばLinuxの場合:OpenGL
OpenGLES
chrome://gpu
disable-gpu
QTWEBENGINE_CHROMIUM_FLAGS
export QTWEBENGINE_CHROMIUM_FLAGS=--disable-gpu
HTML5 DRM
Qt WebEngine は、Widevine CDMプラグインがインストールされている場合、DRM で保護された動画の視聴をサポートします。CDMプラグインは、DRMで保護されたコンテンツを表示するための、Flashベースのプラグインを置き換えるものです。バイナリ形式なので、DRM復号化の実装の詳細を隠すことができます。サードパーティから入手することも、Google Chromeのインストールから入手することもできます。
Qt WebEngine 起動時に、デフォルトのGoogle ChromeインストールディレクトリやLinuxディストロ固有のパスのような、よく知られた場所にあるWidevine CDMプラグインを探します。ただし、プラグインの場所は を使用して に渡すこともできます。widevine-path
QTWEBENGINE_CHROMIUM_FLAGS
Windows の場合:
set QTWEBENGINE_CHROMIUM_FLAGS=--widevine-path="C:/some path/widevinecdm.dll"
Linux の場合
export QTWEBENGINE_CHROMIUM_FLAGS=--widevine-path="/some path/libwidevinecdm.so"
macOSの場合:
export QTWEBENGINE_CHROMIUM_FLAGS=--widevine-path="/some path/libwidevinecdm.dylib"
DRMサービスで最も一般的に使用されるビデオフォーマットH.264は、独自のオーディオおよびビデオコーデックを必要とします。コーデックの有効化の詳細については、オーディオおよびビデオコーデックを参照してください。
この機能は、castLabs、Swank Motion Pictures, Inc.、またはBitmovin Playerの Simple BrowserまたはNano Browserでビデオを再生することでテストできます。
この機能のサポートは Qt 5.7.0 で追加されました。
HTML5 ジオロケーション
Qt WebEngine は JavaScript Geolocation API をサポートしています。 Qt Positioningをバックエンドとしてサポートしています。HTML5 のジオロケーションはデフォルトでは無効になっています。明示的に許可するには、アプリケーションはQWebEnginePage::permissionRequested をリッスンする必要があります。QWebEnginePermission::PermissionType::Geolocation のタイプを持つ許可要求を受信すると、受信したオブジェクトでQWebEnginePermission::grant() を呼び出して、必要な許可を与えることができます。
Qt WebEngine がQt Positioning サポート付きでビルドされている場合、マップを使用してユーザーの現在位置を検索することで、この機能をテストできます。
注: Windows 11では、マップの例がWindows位置情報サービスにアクセスできるように設定を有効にする。設定アプリのPrivacy & Security >Location で、Location services 、Let apps access your location 、Let desktop apps access your location を有効にします。
参照 Qt Positioningを参照してください。GPSまたはIPベースの測位のようなバックエンドのセットアップが可能です。
この機能のサポートは Qt 5.5.0 で追加されました。
HTML5 ウェブソケット
Qt WebEngine は WebSocket JavaScript API をサポートしており、 または プロトコルを使用して WebSocket サーバーと通信できます。さらに、 と との統合により、JavaScript とアプリケーションのネイティブ側との通信が可能になります。ws://
wss://
Qt WebChannel Qt WebSockets
Qt WebChannel モジュールには、チャットサーバーとそのウェブベースのチャットクライアントの素晴らしい例があります。このクライアントは、Qt WebEngine のサンプルブラウザ(Simple BrowserやNano Browser など)ですぐに動作します。
HTTP/2 プロトコル
Qt WebEngine は、HTTP/2プロトコルのChromium実装をサポートしています。
この機能は、Simple BrowserやNano Browser でAkamai HTTP/2 Demo などの HTTP/2 デモを開くことでテストできます。
ローカルストレージ
Qt WebEngine は、有効期限なしで にキーと値のペアを保存する機能をサポートしています。これはLocal Storage
Web Storage API の一部であり、ユーザーは JavaScript プロパティを使用して、指定されたドメインの オブジェクトにアクセスできます。保存されたデータは、ページやブラウザ・アプリケーションが閉じられても持続します。Window.localStorage
Storage
なお、Local
ストレージは、QWebEngineSettings::LocalStorageEnabled 設定で無効にすることもできます。さらに、QWebEngineProfile::setPersistentStoragePath 。
QWebEngineProfile profile("MyProfile"); profile.settings()->setAttribute(QWebEngineSettings::LocalStorageEnabled, isEnabled); profile.setPersistentStoragePath("/path/to/storage");
Qt WebEngine また、 パネルにアクセスし、 メニューを展開することで、Application Local Storage Qt WebEngine デベロッパーツールで Local Storage
の内容を簡単に調査することもできます。
ネイティブダイアログ
ウェブページは以下の機能のためにダイアログを要求するかもしれません:
- HTTP 認証とプロキシ認証のためのユーザー認証情報の入力
- JavaScript アラート、確認ダイアログ、プロンプトの表示
- 色の選択
- ファイルの選択
- フォーム検証メッセージの表示
Qt WebEngine はこれらの機能のための標準ダイアログを提供します。ウィジェットベースのアプリケーションでは、標準ダイアログは に基づいていますが、 アプリケーションでは Controls 1 または Controls 2 (Qt 5.8 以降) に基づいています。後者は プラットフォームでのみ使用されます。QDialog Qt Quick Qt Quick Qt Quick eglfs
Qt Quick Controls 1 またはQt Quick Controls 2 に基づくダイアログを明示的に強制するには、QTWEBENGINE_DIALOG_SET
環境変数をQtQuickControls1
またはQtQuickControls2
に設定します。
Qt WebEngine ウィジェットダイアログは、 (), (), (), () 関数を再実装することでカスタマイズできます。QWebEnginePage::chooseFiles QWebEnginePage::javaScriptAlert QWebEnginePage::javaScriptConfirm QWebEnginePage::javaScriptPrompt
Qt 5.8 以降では、WebEngineView::authenticationDialogRequested()、WebEngineView::javaScriptDialogRequested()、WebEngineView::colorDialogRequested()、WebEngineView::fileDialogRequested()、WebEngineView::formValidationMessageRequested() シグナルに接続することで、Qt Quick ダイアログをカスタマイズできます。
PDF ファイルの表示
Qt WebEngine は、PDF ドキュメントへのナビゲートによる閲覧をサポートします。この機能は、Chromium 拡張 API と PDF ビューアプラグインを使用して PDF 文書を表示します。Simple BrowserまたはNano Browserでテストできます。
この機能を使用するには、QWebEngineSettings::PluginsEnabled またはWebEngineSettings::pluginsEnabled を使用してプラグインの読み込みを有効にする必要があります。
この機能は、QWebEngineSettings::PdfViewerEnabled またはWebEngineSettings::pdfViewerEnabled の設定でオン(デフォルト)またはオフにできます。
この機能のサポートは Qt 5.13.0 で追加されました。
ページライフサイクル API
Qt WebEngine Page Lifecycle API 仕様をサポートしています。これは、ユーザーエージェントがバックグラウンドページを凍結または破棄することでリソースの消費を削減できるようにするための、HTML 標準の進行中の拡張機能です。この機能はウィジェットAPIとQML APIの両方で公開されています。
QML API の使用例については、WebEngine Lifecycle Example を参照してください。
この機能のサポートは Qt 5.14.0 で追加されました。
ライフサイクル状態の概要
各WebEngineView アイテム (またはQWebEnginePage オブジェクト) は、active、frozen、discarded の 3 つのライフサイクル状態のいずれかになります。これらの状態は、CPU のスリープ状態のように、ウェブビューのリソース使用を制御します。
アクティブ状態はウェブビューの通常の制限のない状態です。すべての可視 Web ビューは常にアクティブ状態であり、まだ読み込みが終了していないすべての Web ビューもアクティブ状態です。他のライフサイクル状態に移行できるのは、不可視のアイドル状態の Web ビューだけです。
フリーズ状態は CPU 使用率が低い状態です。この状態では、ほとんどの HTML タスクソースは一時停止(フリーズ)され、その結果、ほとんどの DOM イベント処理と JavaScript 実行も一時停止されます。この状態ではレンダリングができないため、フリーズするためにはウェブビューが不可視でなければなりません。
破棄された状態は、極端にリソースを節約した状態です。この状態では、Web ビューのブラウズコンテキストが破棄され、対応するレンダラーのサブプロセスがシャットダウンされます。この状態でのCPUとメモリの使用量は実質的にゼロになります。この状態を終了すると、ウェブページが自動的に再読み込みされます。破棄された状態に入るプロセスと出るプロセスは、ウェブビューの閲覧履歴をシリアライズしてビューを破棄し、新しいビューを作成してその履歴を復元するのと似ています。
WebEngineView::LifecycleState も参照してください。ウィジェットAPIにおける同等のものはQWebEnginePage::LifecycleState です。
lifecycleState
とrecommendedState
プロパティ
WebEngineView 型のlifecycleState プロパティは、ウェブビューの現在のライフサイクル状態を制御する読み書き可能なプロパティです。このプロパティは、どのような状態に遷移できるかについて、できる限り制限を設けないように設計されています。例えば、現在バックグラウンドで音楽を再生しているウェブビューをフリーズさせ、音楽を停止させることができます。ユーザが見ているバックグラウンドのアクティビティを中断しないように、あまり積極的でないリソース節約戦略を実装するには、recommendedState プロパティを使用する必要があります。
WebEngineView 型のrecommendedState プロパティは読み取り専用のプロパティで、ウェブビューの現在のアクティビティを考慮して、lifecycleState プロパティの安全な制限値を計算します。したがって、バックグラウンドで音楽を再生しているウェブビューの例では、推奨される状態はActive
となります。アプリケーションがバックグラウンドのアクティビティを中断することを避けたい場合、ウェブビューをrecommendedState で指定されている状態よりも積極的にリソースを節約するライフサイクル状態にすることは避けるべきです。
WebEngineView::lifecycleState とWebEngineView::recommendedState も参照してください。ウィジェットAPIで同等のものは、QWebEnginePage::lifecycleState とQWebEnginePage::recommendedState です。
DOM拡張
lifecycleState プロパティはPage Lifecycle API 仕様に関連しており、freeze
とresume
の 2 つの新しい DOM イベントを指定し、Document.wasDiscarded
の新しいブール値プロパティを追加しています。freeze
とresume
イベントは、Active
からFrozen state
に遷移するときに発生し、その逆も同様です。Document.wasDiscarded
プロパティは、Discarded
状態からActive
状態に遷移するときにtrue
に設定されます。
PDFへの印刷
Qt WebEngine は、ウェブ・ページを PDF ファイルに印刷することをサポートしています。詳細については、 () および を参照してください。QWebEnginePage::printToPdf WebEngineView.printToPdf
この機能はHtml2Pdfを使ってテストすることができます。
この機能のサポートはQt 5.7.0で追加されました。
プロセスモデル
Qt WebEngine Qt 5.7.0 では、複数の OS プロセスを使用することで、Web サイトを互いに、またクライアントアプリケーションから分離し、セキュリティと堅牢性を向上させます。以下のプロセスモデル、つまり OS プロセス間で Web サイトを分割する方法がサポートされています:
サイトインスタンスごとのプロセス
これはデフォルトのモデルです。別々のサイトのページは別々のプロセスに入れられ、同じサイトへの別々の訪問も分離されます。
2つのウェブページが同じ登録ドメイン名(たとえば、wikipedia.org
)とスキーム(たとえば、https
)から発信されている場合、同じサイトに属していると見なされます。これは同一オリジン・ポリシーと似ていますが、サブドメインは無視されます。たとえば、https://en.wikipedia.org/
とhttps://de.wikipedia.org/
の両方が同じサイトに属することになる。
サイト・インスタンスは、同じサイトに属するウェブ・ページの集まりです。アプリケーションが明示的に URL をQt WebEngine にロードすると(たとえばQWebEnginePage::setUrl 経由)、そのページに対して新しいサイト・インスタンスが作成されます。しかし、ユーザーがページ上の同じサイトのリンクをクリックすると、既存のサイト・インスタンスはさらに多くのページで拡張されるだけです。
たとえば、シンプル・ブラウザの例では、ユーザーが2つのタブを開き、URLバーにhttps://en.wikipedia.org/
と明示的に入力すると、両方のタブがそれぞれ別のOSプロセスを持つことになる(URLを明示的に入力すると、新しいサイト・インスタンスが作成されるため)。しかし、ユーザーが同じサイトのリンクをミドルクリックしてさらにタブを開くと、これらの新しいタブは同じOSプロセスを共有することになります(ユーザーとの対話によって既存のサイトインスタンスが拡張されるため)。
サイトごとのプロセス
別々のサイトのページは別々のプロセスに入れられます。サイト・インスタンスごとのプロセスとは異なり、同じサイトへのすべての訪問はOSプロセスを共有します。
このモデルの利点は、より多くのウェブページがプロセスを共有するため、メモリ消費量が減ることです。欠点は、セキュリティ、堅牢性、応答性の低下です。
このモデルを有効にするには、コマンドライン引数--process-per-site
を使用します。コマンドライン引数の使用」を参照してください。
単一プロセス
デバッグのみを目的として、シングル・プロセス・モードを有効にするには、コマンドライン引数--single-process
を使用します。関連項目:コマンドライン引数の使用およびQt WebEngine デバッグとプロファイリング。
スペルチェッカー
Qt WebEngine は、HTML フォームにスペルチェックのサポートを統合し、ユーザーがスペルチェックされたメッセージを送信できるようにします。ユーザーがスペルミスの下線を引いた単語をクリックすると、デフォルトのコンテキストメニューに最大4つの候補が表示されます。1つを選択すると、スペルミスした単語が置換されます。
スペルチェックには辞書が必要です。Hunspellプロジェクトの辞書をサポートしていますが、特別なバイナリ形式にコンパイルする必要があります。Hunspell辞書は2つのファイルで構成されています:
.dic
、その言語の単語を含む辞書ファイル。- 辞書内の特別なフラグの意味を定義する
.aff
ファイル。
これらの2つのファイルは、Qtに同梱されているqwebengine_convert_dict
ツールを使用して、bdic
形式に変換することができます。Qt WebEngine スペルチェッカーが初期化されると、bdict
辞書をロードし、整合性をチェックしようとします。
CMake では、qt_add_webengine_dictionaryコマンドを使用して、Hunspell.dic
ファイルを.bdic
バイナリ形式に変換できます。このコマンドはqtwebengine_dictionaries
ターゲットを作成し、プロジェクトが依存関係として使用できるようにします。
QTWEBENGINE_DICTIONARIES_PATH
が設定されている場合、スペルチェッカーは指定されたディレクトリの辞書を使用します。そうでなければ、実行ファイルに相対するqtwebengine_dictionariesディレクトリが存在すれば、それを使用します。存在しない場合は、QT_INSTALL_PREFIX/qtwebengine_dictionaries
を探します。
macOSでは、ビルド時にQt WebEngine がどのように設定されているかによって、スペルチェックのデータを見つける方法が2つあります:
- Hunspell辞書(デフォルト) - 他のプラットフォームと同様に、.bdic辞書が使用されます。
- ネイティブ辞書 - macOSのスペルチェックAPIが使用されます。
したがって、macOS Hunspell の場合、Qt WebEngine は、アプリケーションバンドルResources
ディレクトリ内のqtwebengine_dictionariesサブディレクトリと、Qt フレームワークバンドル内のResources
ディレクトリを検索します。
要約すると、Hunspellを使用する場合、以下のパスが考慮されます:
QTWEBENGINE_DICTIONARIES_PATH
もし- QCoreApplication::applicationDirPath()/qtwebengine_dictionaries またはQCoreApplication::applicationDirPath()/../Contents/Resources/qtwebengine_dictionaries (macOS の場合)
- [QLibraryInfo::DataPath]/qtwebengine_dictionaries または path/to/QtWebEngineCore.framework/Resources/qtwebengine_dictionaries (macOS の Qt フレームワークバンドル)
スペルチェックはデフォルトで無効になっており、ウィジェットベースのアプリケーションではQWebEngineProfile::setSpellCheckEnabled() メソッドを、Qt Quick アプリケーションではWebEngineProfile.spellCheckEnabled プロパティを使用することで、プロファイルごとに有効にすることができます。
スペルチェックに使用される現在の言語はプロファイルごとに定義され、QWebEngineProfile::setSpellCheckLanguages() メソッドまたはWebEngineProfile.spellCheckLanguages プロパティを使用して設定できます。
この機能は、Spellchecker Exampleをビルドして実行することでテストできます。
Qt WebEngine また、 configureスイッチを使用すれば、スペルチェッカーをサポートせずにコンパイルすることもできます。webengine-spellchecker
qt-configure-module path\to\qtwebengine\sources -no-webengine-spellchecker
詳細はQt Configure Options を参照してください。
この機能は Qt 5.8.0 で追加されました。
タッチ
Qt WebEngine は、ウェブページのナビゲーションやインタラクションにタッチデバイスをサポートします。
アプリケーションは以下の方法でタッチイベントの使用を禁止することができます:
- コマンドラインでフラグ
--touch-events=disabled
を渡すと、JavaScript API のタッチイベント・サポートが無効になります(つまり、ontouchstart
と関連ハンドラがdocument.window
オブジェクトに存在しなくなります)。タッチイベントは引き続きウェブページに配信されます。 - WebEngine ビュー フォーカス プロキシ オブジェクトにQObject::installEventFilter を使用してイベント フィルタ オブジェクトをインストールし、すべてのタッチ イベントをフィルタリングします。
ビューソース
Qt WebEngine は、ウェブページの HTML ソースの表示をサポートしています。
この機能はカスタムメニューから使用したり、カスタムイベントに割り当てることができます。詳細については、WebEngineView::WebAction 、およびQWebEnginePage::WebAction を参照してください。
この機能は、Simple BrowserまたはNano Browser でウェブページを開き、コンテキストメニューでPage Source
を選択することでテストできます。Page Source
コンテキスト・メニュー・エントリは、新しいタブでソース・ビューを開きます。
現在のタブでソース・ビューを開くために、view-source URI スキームを持つ URL もサポートされています。たとえば、以下の URL を URL バーに入力すると、qt.io ウェブページの HTML ソースを表示できます:
view-source:https://www.qt.io/
view-source URIスキームを使用した不完全なURLの自動補完により、この機能をより快適に使用できます。例えば、以下の不完全なURLでもqt.ioウェブページのソースビューをロードします:
view-source:qt.io
この機能のサポートは Qt 5.8.0 で追加されました。
ウェブ通知
QtWebEngine は JavaScriptWeb Notifications API をサポートしています。アプリケーションは、QWebEnginePage::Notifications またはWebEngineView.Notifications を使用して、明示的にこの機能を許可する必要があります。
この機能のサポートは Qt 5.13.0 で追加されました。
WebGL
Qt WebEngine はいくつかのグラフィックススタックのセットアップで WebGL をサポートします。ユーザーは のアプリケーションを使って chrome://gpu ページにアクセスできます。QtWebEngine グラフィックス機能ステータスの概要では、WebGLが現在のプラットフォームセットアップでサポートされているかどうかを確認できます。ユーザーは、WebGLレポートを確認することもできます。
WebGL サポートはデフォルトで有効になっています。QWebEngineSettings::WebGLEnabled 、無効にすることができます。
WebRTC
WebRTC は、シンプルな API を介してブラウザにリアルタイム通信(RTC)機能を提供します。詳細については、WebEngineView.Feature および QWebEnginePage::Feature を参照してください。
この機能は、ウェブカメラまたはマイクをセットアップし、Simple BrowserまたはNano Browserで https://test.webrtc.org/
。
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.