Qt WebEngine プラットフォームノート

ソースから Qt WebEngine をビルドする

スタティックビルドはサポートされていません。

ソースから Qt モジュールをビルドするための要件は、サポートされているプラットフォームごとに個別に記載されています:

また、Qt WebEngineモジュールのビルドには以下のツールが必要です:

すべてのプラットフォーム

すべてのプラットフォームで、ビルド時に以下のツールが必要です:

  • C++20コンパイラのサポート
  • CMake 3.19以降
  • html5libライブラリを含むPython3
  • Bison、Flex
  • GPerf
  • Node.jsバージョン14以降

Windows

Windowsでは、以下の追加ツールが必要です:

  • Visual Studio 2019以降、またはclang-clバージョン10以降
  • アクティブテンプレートライブラリ(ATL)、通常はVisual Studioのインストールに含まれる
  • Windows 11 SDKバージョン10.0.22621.0以降

注: Qt WebEngine のビルドにmsys2 またはcygwin のツールを使用することは、ビルドエラーを引き起こす可能性があるため、推奨されません。

Linux

Linux では、Clang または GCC バージョン 9 以降が必要です。

Qt WebEngine は、依存関係のほとんどを検出するためにpkg-config を必要とします。以下のpkg-config ファイルが必要です:

  • dbus-1
  • fontconfig

Qt がxcb 用に設定されている場合は、次のpkg-config ファイルも必要です:

  • libdrm
  • xcomposite
  • xcursor
  • xi
  • xrandr
  • xscrnsaver
  • xtst

macOS

macOS では、以下が必要です:

  • macOS 10.14以降
  • Xcode 12.0以降
  • macOS 11 SDKまたはそれ以降

注意: Qt WebEngine は macOS の 32 ビットモードではビルドできません(macx-clang-32 mkspec を使用)。

以前の Qt バージョンを使用して Qt WebEngine をビルドする

Qt WebEngine のビルドには、以前の Qt バージョン(最後の LTS バージョンまで)がサポートされています。つまり、Qt WebEngine 6.4はQt 6.2.x、Qt 6.3.x、Qt 6.4でビルドできます。

それ以前のバージョンの Qt を使用して Qt Webengine をビルドするには、以下の手順に従います:

  1. qtwebengineのソースをダウンロードしてください。
  2. 以前のQtバージョンから、qmake && make (&& make install).

Mac App Storeとの互換性

Qt WebEngine を使用したアプリケーションは Mac App Store と互換性がありません:

  • コードの Chromium 部分には、App Store で禁止されているプライベート API メソッドがいくつか使用されています。
  • App Store に提出するアプリケーションは、App Sandbox 機能を有効にしてコード署名を行う必要があります。App Sandbox機能は、Chromium自身のサンドボックス初期化を妨害するため、Chromiumが適切に初期化されません。これはプライベートAPIの使用とも関連している。さらに、スタンドアロンのChromium自体はApp Sandboxを有効にして公式にテストされておらず、App Storeの制限を回避する作業が行われたとしても、ライブラリの正しい動作を保証するものではない。

デュアルGPU搭載MacBookでのmacOS Airplayサポート

GPU 切り替えをサポートする MacBook から AppleTV にストリーミングするときに Qt WebEngine を正しく動作させるには、アプリケーションの Info.plist ファイルにNSSupportsAutomaticGraphicsSwitching オプションを追加し、値をYES に設定することが重要です。そうしないと、Airplay をオンまたはオフに切り替えた後、新しい Web エンジンのビューインスタンスを作成するときに、レンダリングの問題が発生する可能性があります。

デフォルトの QSurfaceFormat OpenGL プロファイルのサポート

変更されたOpenGLプロファイルを持つ新しいデフォルトQSurfaceFormat を設定する必要がある場合、作成されるすべてのOpenGLコンテキストが同じOpenGLプロファイルを使用するように、アプリケーションインスタンスが宣言される前に設定する必要があります。

macOSでは、デフォルトのQSurfaceFormat がアプリケーション・インスタンスの後で設定されると、アプリケーションはqFatal ()で終了し、デフォルトのQSurfaceFormat がアプリケーション・インスタンスの前に設定されるべきであるというメッセージが表示されます。

サンドボックスのサポート

Qt WebEngine は、Chromium のレンダープロセスに対して、すぐに使えるサンドボックスのサポートを提供します。

Linux では、以下の制限があります:

  • カーネルが匿名名前空間機能をサポートしている必要があります(カーネルバージョン3.8以降)。ただし、Debian、Ubuntu、およびその他のDebian派生ディストリビューションでは、この機能はデフォルトでオフになっています。この機能をオンにするには、/proc/sys/kernel/unprivileged_userns_clone を 1 に設定する。
  • カーネルがseccomp-bpf 機能をサポートしている必要があります(カーネルバージョン3.5以降)。
  • Setuidサンドボックスはサポートされていないため、無効になっています。

サンドボックスを明示的に無効にするには、以下のオプションのいずれかを使用する:

  • 環境変数QTWEBENGINE_DISABLE_SANDBOX を1に設定する。
  • ユーザー・アプリケーション実行ファイルに--no-sandbox コマンドライン引数を渡す。
  • QTWEBENGINE_CHROMIUM_FLAGS--no-sandbox に設定する。

詳細については、「コマンドライン引数の使用」を参照してください。

Docker環境におけるメモリ要件

DockerコンテナでQt Web Engineのサンプルを実行し、コンテンツの多いサイトを閲覧すると、BUSエラー(SIGBUS)が報告されることがあります。一般的に、これはDockerが小さすぎるメモリ領域(64MBなど)でコンテナを実行していることが原因です。この問題を解決するには、メモリ領域のサイズを増やしてください。

アクセシビリティとパフォーマンス

Qt WebEngine では、以下の条件を満たすと Web ページのアクセシビリティをサポートします:

  • Qt Core がアクセシビリティサポートを有効にして構成され、ビルドされている。
  • QPA プラグインが、アクセシビリティを有効にするようオペレーティングシステムから通知される。こ れは、 た と えば Windows のス ク リ ーン リ ーダ アプ リ ケーシ ョ ンや macOS の VoiceOver を使用す る と き に発生 し ます。

一部の古い Linux 構成では、アクセシビリティが原因で大きな HTML ページが著しく遅くなることがあります。

そのため、Qt WebEngine のアクセシビリティサポートは、環境変数QTWEBENGINE_ENABLE_LINUX_ACCESSIBILITY を 0 に設定することで Linux 上で無効にすることができます。

Windows におけるフルスクリーンアプリケーションのポップアップ

Windows のコンポジターの制限により、フルスクリーンの Web エンジンビューを表示するアプリケーションでは、ポップアップやその他のトップレベルのウィンドウが正しく表示されません。その理由と回避策はフルスクリーンOpenGLベースのWindowsで説明されています。

Windowsアプリケーション・マニフェスト

マニフェストは XML ファイルで、プログラムの起動時に読み込まれ、プログラムの実行方法を Windows に通知します。Qt WebEngine の機能の中には、Windows 上でユーザー アプリケーションを正しく動作させるためにマニフェスト ファイルを追加する必要があるものがあります。

以下のスニペットは、マニフェストファイルの構造と、それをプログラムに埋め込む方法を示しています。

注: これらのコードスニペットは、WebEngine Quick Nano Browserの例から引用しています。

マニフェスト ファイルは、アプリケーションがサポートする Windows バージョンを定義します。httpUserAgent は、正しい Windows バージョンをレポートするためにこの情報を必要とします。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
    <application>
    <!--The ID below indicates application support for Windows Vista -->
    <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
    <!--The ID below indicates application support for Windows 7 -->
    <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
    <!--The ID below indicates application support for Windows 8 -->
    <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
    <!--The ID below indicates application support for Windows 8.1 -->
    <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
    <!--The ID below indicates application support for Windows 10/11 -->
    <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
    </application>
</compatibility>
</assembly>

このファイルを実行ファイルに埋め込むには、ソースに追加します:

    ...
qt_add_executable(quicknanobrowser
    main.cpp
    utils.h
)

if(WIN32)
    set_property(
        TARGET quicknanobrowser
        APPEND PROPERTY
            SOURCES quicknanobrowser.exe.manifest)
endif()
    ...

詳細については、アプリケーションマニフェストのドキュメントページを参照してください。

©2024 The Qt Company Ltd. 本書に含まれる文書の著作権は、それぞれの所有者に帰属します。 ここで提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。