何時間ものテストの後、私は結論を得ました。問題の目標に Qt を使用するのは完璧です。
Qt は、WebKit を使用して HTML5 をレンダリングする QWebView と呼ばれるウィジェット (別名コントロール、別名 GUI コンポーネント) を提供します。この QWebView を QMainWindow と一緒に使用して、ネイティブに似たアプリケーションを形成できます。
C++ から JS を呼び出すには、次のようにします。
QWebView Webview;
Webview->load(...);
...
Webview->page()->mainFrame()->evaluateJavaScript("alert('whatever');");
JS からの C++ の呼び出しも同様に実行できます。
//(1) in C++ code:
QWebView Webview;
Webview->load(...);
QObject Object; //or any object inherited from QObject
...
Webview->page()->mainFrame()->addToJavaScriptWindowObject("Cpp",&Object);
//(2) in HTML/JS code:
<script>
Cpp.some_function(); //declared in the QObject above, with 'public slots:'
</script>
ただし、アプリケーションが Qt のダイナミック リンク ライブラリ (Qt コア、Qt gui、Qt ネットワーク、Qt Webkit など) を必要とするため、結果が単一のバイナリ ファイルになることは困難です。インストーラーをビルドすると、問題を解決できます。