Qt WebEngine の機能

Qt WebEngine は以下の機能をサポートしています:

オーディオとビデオのコーデック

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 BrowserNano 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.devToolsViewWebEngineView.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 スキームを定義できます。

カスタムスキームは、通常のウェブセキュリティポリシーを持つ代替ネットワークプロトコルや、ユーザーインターフェイスコンポーネントやデバッグ情報を表示するための特権的な内部スキーム、特別な制限を持つサンドボックススキームなどを実装するために使用できます。

詳しくはQWebEngineUrlSchemeQWebEngineUrlSchemeHandler を参照してください。

ドラッグ&ドロップ

Qt WebEngine は HTML5 のドラッグ&ドロップをサポートしています。

この機能は、Simple BrowserまたはNano BrowserHTML5 Demos - Drag and DropHTML5 Demos - Simple Drag and DropHTML5 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.fullscreenSupportEnabledWebEngineView.fullScreenRequestedQWebEngineSettings::FullScreenSupportEnabledQWebEnginePage::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は、独自のオーディオおよびビデオコーデックを必要とします。コーデックの有効化の詳細については、オーディオおよびビデオコーデックを参照してください。

この機能は、castLabsSwank 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 servicesLet apps access your locationLet 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 BrowserNano Browser など)ですぐに動作します。

HTTP/2 プロトコル

Qt WebEngine はHTTP/2プロトコルの Chromium 実装をサポートしています。

この機能は、Simple BrowserNano BrowserAkamai 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 ToolsLocal 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::lifecycleStateWebEngineView::recommendedState も参照してください。ウィジェットAPIで同等のものは、QWebEnginePage::lifecycleStateQWebEnginePage::recommendedState です。

DOM拡張

lifecycleState プロパティはPage Lifecycle API 仕様に関連しており、freezeresume の 2 つの新しい DOM イベントを指定し、Document.wasDiscarded の新しいブール値プロパティを追加しています。freezeresume イベントは、Active からFrozen state に遷移するときに発生し、その逆も同様です。Document.wasDiscarded プロパティは、Discarded 状態からActive 状態に遷移するときにtrue に設定されます。

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 を使用する場合、以下のパスが考慮されます:

スペルチェックはデフォルトでは無効になっており、ウィジェットベースのアプリケーションでは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.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。