Qt WebEngine の機能
Qt WebEngine は以下の機能をサポートしています:
- オーディオおよびビデオコーデック
- WebEngineDriver
- 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() を検査するページに呼び出すか、this
ページを検査するQWebEnginePage::setDevToolsPage() を呼び出します。
それぞれの QML プロパティはWebEngineView.devToolsView とWebEngineView.inspectedView です。
詳細はQt WebEngine のデバッグとプロファイリングを参照してください。
クライアント証明書
ウェブサーバによっては、特に多くのイントラネットサイトでは、クライアント証明書と呼ばれる証明書でクライアントを認証する必要があります。Qt WebEngine は、macOS と Windows ではシステム設定にインストールされているクライアント証明書を、Linux では NSS データベースにインストールされているクライアント証明書を読み取ります。証明書はpk12util
ツールを使って NSS データベースにインストールできます。
デフォルトでは、Qt WebEngine はサーバにクライアント証明書を提供しません。
クライアント証明書のサポートを有効にするには、アプリケーションがQWebEnginePage::selectClientCertificate またはWebEngineView.selectClientCertificate シグナルをリッスンし、提供される証明書のいずれかを選択する必要があります。信頼できない Web サイトにナビゲートできるアプリケーションでは、リモート・サーバにユーザーを一意に識別する前に、常にユーザーに選択肢を与えることを推奨します。
システム設定に保存されているクライアント証明書に加えて、Qt WebEngine ではインメモリストアも提供しています。QWebEngineClientCertificateStore のインスタンスはQWebEngineProfile::clientCertificateStore() メソッドで取得できます。アプリケーションはこのクラスを使用して、QWebEngineClientCertificateStore::add ()コールで新しい証明書を追加できます。selectClientCertificate
を呼び出す際、Qt WebEngine はシステム証明書とメモリ内保存クライアント証明書の両方を一覧表示することに注意してください。
実装の詳細については、クライアント証明書の例も参照してください。
カスタムスキーム
Qt WebEngine では、専用のセキュリティ ポリシーとトランスポート メカニズムを持つ独自のカスタム URL スキームを定義できます。
カスタムスキームは、通常のウェブセキュリティポリシーを持つ代替ネットワークプロトコルや、ユーザーインターフェイスコンポーネントやデバッグ情報を表示するための特権的な内部スキーム、特別な制限を持つサンドボックススキームなどを実装するために使用できます。
詳しくはQWebEngineUrlScheme とQWebEngineUrlSchemeHandler を参照してください。
ドラッグ&ドロップ
Qt WebEngine は HTML5 のドラッグ&ドロップをサポートしています。
この機能は、Simple BrowserまたはNano Browser で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 アイコンであるfavicon をサポートしています。各アイコンはQWebEngineProfile ごとに内部データベースに保存され、QWebEnginePage::icon() 呼び出しまたは現在読み込まれているコンテンツのWebEngineView.icon プロパティを使用してアクセスできます。
さらに Qt WebEngine は、内部プロファイルのデータベースに既に保存されているアイコンにアクセスするための API を提供しています。
注意: アイコンデータベースは記録外のプロファイルでは利用できません。
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 は、フルスクリーンモードでの Web コンテンツの表示をサポートしています。詳細については、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 はQt Positioningをバックエンドとして JavaScript Geolocation API をサポートしています。HTML5 のジオロケーションはデフォルトでは無効になっています。明示的に許可するには、アプリケーションはQWebEnginePage::permissionRequested をリッスンする必要があります。QWebEnginePermission::PermissionType::Geolocation タイプの許可要求を受信すると、受信したオブジェクトでQWebEnginePermission::grant() を呼び出して、必要な許可を与えることができます。
Qt WebEngine が Qt Positioning サポート付きでビルドされている場合、この機能はMaps を使用してユーザーの現在位置を検索することでテストできます。
注意: Windows 11 では、マップのサンプルに Windows の位置情報サービスへのアクセスを許可する設定を有効にしてください。設定アプリのPrivacy & Security >Location で、Location services 、Let apps access your location 、Let desktop apps access your location を有効にします。
GPS や IP ベースの測位のようなバックエンドのセットアップについては、Qt Positioning を参照してください。
この機能のサポートは Qt 5.5.0 で追加されました。
HTML5 ウェブソケット
Qt WebEngine は WebSocket JavaScript API をサポートしており、ws://
またはwss://
プロトコルを使用して WebSocket サーバーと通信できます。さらに、Qt WebChannel と Qt WebSockets との統合により、JavaScript とアプリケーションのネイティブ側との通信が可能になります。
Qt WebChannel モジュールには、チャットサーバとWeb ベースのチャットクライアントの素晴らしい例があります。このクライアントは 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 の一部で、ユーザーはWindow.localStorage
JavaScript プロパティを使用して、指定されたドメインの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 Developer ToolsでLocal Storage
の内容を簡単に調査することもできます。
ネイティブダイアログ
Web ページでは、以下の機能のダイアログを要求することがあります:
- HTTP 認証やプロキシ認証のためのユーザー認証情報の入力
- JavaScript アラート、確認ダイアログ、プロンプトの表示
- 色の選択
- ファイルの選択
- フォーム検証メッセージの表示
Qt WebEngine は、これらの機能のための標準ダイアログを提供します。QDialogQt Quick アプリケーションでは、Qt Quick Controls 1 または Qt Quick Controls 2 (Qt 5.8 以降) をベースにすることができます。後者は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 以降、Qt Quick ダイアログは、WebEngineView::authenticationDialogRequested()、WebEngineView::javaScriptDialogRequested()、WebEngineView::colorDialogRequested()、WebEngineView::fileDialogRequested()、WebEngineView::formValidationMessageRequested() シグナルに接続することでカスタマイズできます。例を示します、
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 では、Web ページを PDF ファイルに印刷することができます。詳細については、QWebEnginePage::printToPdf() およびWebEngineView.printToPdf を参照してください。
この機能はHtml2Pdf を使ってテストできます。
この機能のサポートは Qt 5.7.0 で追加されました。
プロセスモデル
Qt WebEngine は、複数の OS プロセスを使用して、Web サイトを互いに、またクライアントアプリケーションから分離し、セキュリティと堅牢性を向上させます。以下のプロセスモデル、つまり OS プロセス間で Web サイトを分割する方法がサポートされています:
サイトインスタンスごとのプロセス
これはデフォルトのモデルです。別々のサイトのページは別々のプロセスに入れられ、同じサイトへの別々の訪問も分離されます。
同じ登録ドメイン名 (たとえば、wikipedia.org
) とスキーム (たとえば、https
) から発信された 2 つの Web ページは、同じサイトに属していると見なされます。これは同一オリジン・ポリシーと似ていますが、サブドメインは無視されます。たとえば、https://en.wikipedia.org/
とhttps://de.wikipedia.org/
の両方が同じサイトに属することになる。
サイト・インスタンスは、同じサイトに属するウェブ・ページの集まりです。アプリケーションが Qt WebEngine に URL を明示的にロードすると(たとえばQWebEnginePage::setUrl を介して)、そのページに対して新しいサイトインスタンスが作成されます。しかし、ユーザーがページ上の同じサイトリンクをクリックすると、既存のサイトインスタンスは単にページが追加されるだけです。
たとえば、シンプル・ブラウザの例では、ユーザーが2つのタブを開き、URLバーにhttps://en.wikipedia.org/
と明示的に入力すると、両方のタブがそれぞれ別のOSプロセスを持つことになる(URLを明示的に入力すると、新しいサイト・インスタンスが作成されるため)。しかし、ユーザーが同じサイトのリンクをミドルクリックしてさらにタブを開くと、これらの新しいタブは同じOSプロセスを共有することになります(ユーザーとの対話によって既存のサイトインスタンスが拡張されるため)。
サイトごとのプロセス
別々のサイトのページは別々のプロセスに入れられます。サイト・インスタンスごとのプロセスとは異なり、同じサイトへのすべての訪問はOSプロセスを共有します。
このモデルの利点は、より多くのウェブページがプロセスを共有するため、メモリ消費量が減ることです。欠点は、セキュリティ、堅牢性、応答性の低下です。
このモデルを有効にするには、コマンドライン引数--process-per-site
を使用します。コマンドライン引数の使用」を参照してください。
単一プロセス
デバッグの目的でのみ、コマンドライン引数--single-process
を使用して、シングルプロセスモードを有効にすることができます。コマンドライン引数の使用」および「Qt WebEngine のデバッグとプロファイリング」を参照してください。
スペルチェッカー
Qt WebEngine では、ユーザーがスペルチェックされたメッセージを送信できるように、スペルチェックのサポートを HTML フォームに統合することができます。ユーザがスペルミスのある単語の下線をクリックすると、デフォルトのコンテキスト メニューに最大 4 つの候補が表示されます。いずれかを選択すると、スペルミスした単語が置換されます。
スペルチェックには辞書が必要です。Hunspellプロジェクトの辞書をサポートしていますが、特別なバイナリ形式にコンパイルする必要があります。Hunspell辞書は2つのファイルで構成されています:
.dic
、その言語の単語を含む辞書ファイル。- 辞書内の特別なフラグの意味を定義する
.aff
ファイル。
これらの 2 つのファイルは、Qt に同梱されているqwebengine_convert_dict
ツールを使用してbdic
形式に変換できます。Qt WebEngine のスペルチェッカーが初期化されると、bdict
の辞書を読み込み、整合性をチェックしようとします。
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 は、webengine-spellchecker
configure スイッチを使用することで、スペルチェッカーをサポートせずにコンパイルすることもできます。
qt-configure-module path\to\qtwebengine\sources -no-webengine-spellchecker
詳細はQt Configure Options を参照してください。
この機能は Qt 5.8.0 で追加されました。
タッチ
Qt WebEngine は、Web ページを操作するためのタッチデバイスをサポートしています。
アプリケーションは以下の方法でタッチイベントの使用を禁止できます:
- コマンドラインで
--touch-events=disabled
というフラグを渡すと、JavaScript API でのタッチイベントのサポートが無効になります(つまり、ontouchstart
と関連するハンドラがdocument.window
オブジェクトに存在しなくなります)。タッチイベントは引き続きウェブページに配信されます。 - WebEngine ビュー フォーカス プロキシ オブジェクトにQObject::installEventFilter を使用してイベント フィルタ オブジェクトをインストールし、すべてのタッチ イベントをフィルタリングします。
ビューソース
Qt WebEngine は Web ページの HTML ソースの表示をサポートしています。
この機能は、カスタムメニューから使用したり、カスタムイベントに割り当てることができます。詳細については、WebEngineView::WebAction およびQWebEnginePage::WebAction を参照してください。
この機能は、Simple BrowserまたはNano Browser で Web ページを開き、コンテキストメニューから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 をサポートしています。ユーザーは、QtWebEngine のアプリケーションを使用して、chrome://gpu ページにアクセスできます。グラフィックスの機能ステータスの概要では、現在のプラットフォームのセットアップで WebGL がサポートされているかどうかを確認できます。ユーザーは、WebGLレポートを確認することもできます。
WebGL サポートはデフォルトで有効になっています。QWebEngineSettings::WebGLEnabled 、無効にすることができます。
WebRTC
WebRTC は、シンプルな API を介してブラウザにリアルタイム通信(RTC)機能を提供します。詳細については、WebEngineView.Feature および QWebEnginePage::Feature を参照してください。
この機能は、ウェブカメラまたはマイクをセットアップし、Simple BrowserまたはNano Browserで https://test.webrtc.org/
。
©2024 The Qt Company Ltd. 本書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。