2025年のQt World SummitでQt Bridgesを発表した際の目標はシンプルでした。好みのプログラミング言語でバックエンドを書きながら、Qt QuickのUIを構築できるようにすることです。今年はC#とRustのブリッジで複数回のパブリックベータを実施しました。テストに参加し、フィードバックを寄せてくださった皆さまに感謝します。すべてのリリースは、そのフィードバックをもとに形作られてきました。

本日、Qt Bridge for RustとQt Bridge for C#の両方が、テクノロジープレビューの段階に入りました。
Qt Bridgesとは?
Qt Bridgesの開発では、次の3つのシンプルな指針に沿って進めてきました。
- モダンなUIを簡単に開発できること
- すべてのデスクトッププラットフォームで動作すること(組込みなど、対応範囲も今後拡大予定です)
- 既存のコードベースを再利用できること
実際のQt Bridgesアプリケーションは、2つの部分で構成されます。ユーザーインターフェースはQt QuickとともにQMLで記述し、バックエンドはRustまたはC#で記述します。言語の標準的な仕組み(C#では属性、Rustでは属性マクロ)を使って、UIから参照させたい型をマークします。すると、QMLからプロパティを読み取ってバインドしたり、メソッドを呼び出したり、シグナルに反応したり、コレクションをリストやテーブルに表示したりできます。独自のグルーコードや深いQtの知識は必要ありません。UIはバックエンドが公開したものだけに依存するため、どちらか一方を独立して変更できます。
Qt Bridgesは、Qt APIのフルバインディングではありません。バックエンドとQt Quick UIを接続することに重点を置いています。ネットワーク、ファイルI/O、その他の処理には、引き続き自分のエコシステムのライブラリを使えます。
テクノロジープレビューとは
テクノロジープレビューは、ベータ版と最初の安定版リリースの間に位置する段階です。中核となる機能セットはすでに揃っており、プロトタイプや評価プロジェクトに利用できます。ただし、安定版リリースまでにAPI、対応プラットフォーム、要件が変わる可能性があります。今の段階でいただくフィードバックこそ、最終的な製品に最も大きく影響します。
Qt Bridge for Rust
Qt Bridge for Rustを使うと、Rustで書いたバックエンドを持つQt Quick UIを構築できます。C++ヘッダーや手動のFFIは不要で、Qtの事前知識がなくても始められます。APIは属性マクロとトレイトをベースにしています。所有権モデルでは、QMLオブジェクトをRc<RefCell<T>>にマッピングするため、境界をまたいでも借用ルールが適用されます。また、このブリッジはCXX-Qtと基盤を共有しているため、両者を共存させることができます。
Rustブリッジでは、次のことができます。
- #[qobject]でRustの構造体をQMLに公開し、#[qproperty]、#[qslot]、*#[qsignal]*でプロパティ、スロット、シグナルを定義する
- QMLのビューをRustのコレクションにバインドする
- Rustから、QMLオブジェクトツリーを構築・操作する
- 例えばtokioランタイムから、スレッドをまたいでメソッドを呼び出す
Rustでのブリッジの使い方は、すべてドキュメントに掲載しています。
Qt Bridge for C#
Qt Bridge for C#は、既存のアプリケーションを書き直すことなく、モダンでクロスプラットフォームなUIを実現したい.NETチーム向けです。既存のC#コードはそのままに、その上にQt Quickのフロントエンドを追加できます。
C#ブリッジでは、次のことができます。
- C#オブジェクトをQMLの要素に公開する
- QMLからC#プロパティを読み書き・バインドする
- C#メソッドを呼び出し、C#イベントを処理する
- QMLのビューをC#のコレクションにバインドする
詳しくは、ドキュメントをご覧ください。
Visual Studio拡張機能
Windowsの場合は、Visual Studio向けのQt Bridge for C#拡張機能が最も手軽な始め方です。プロジェクトテンプレートとアイテムテンプレートが追加されるため、dotnetテンプレートを個別にインストールする必要はありません。この拡張機能で作成したプロジェクトには、適切なNuGetパッケージが自動的に参照されます。さらに、プロジェクトをビルドするとC#の型に対するQML IntelliSenseが使えるよう、QML言語サーバーのサポートも有効になります。
- Visual Studioで**拡張機能 > 拡張機能の管理…**を開き、*Qt Bridge for C#*を検索してインストールする
- ファイル > 新規作成 > プロジェクトを選び、QMLを検索してQML Applicationテンプレートを選択する
- 必要に応じてAdd sample code to projectを選択する
- F5キーを押してビルドし、実行する

Visual Studio Code拡張機能
VS Codeをお使いの場合は、どのプラットフォームでもQt Bridge C#拡張機能(VS Code用)をインストールできます。この拡張機能は、Qt Bridge for C#プロジェクトをQt Extension for VS Codeに接続し、次の機能を提供します。
- 複数プロジェクトのワークスペースを含む、プロジェクトの検出
- Qtインストールの検索。Qtが見つからない場合は、Qt Bridge C#: Select Qt Installationコマンドを実行
- QML言語サーバーのサポートと、C#の型に対するライブQMLプレビュー
- 新規プロジェクトに用意されたQMLデバッグの設定
プロジェクトを作成するには、Qt: Create a new project or fileを実行してQt Bridge for C# applicationを選択します。QMLツールが使用するメタデータを生成できるよう、一度ビルドしてください。この拡張機能にはQt Core拡張機能が必要です。C#の編集とデバッグには、C# Dev Kitに加えてQt QML拡張機能をあわせてインストールすることをおすすめします。

開発チームから直接学ぶ
Qt World Summitのウェビナー「RustとC#向けのモダンで高性能なUI:Qt Bridgesテクノロジープレビュー登場」に、Cristián Maureira-FredesとMatthias Rauterが登壇します。開催は2026年11月3日(UTC+1)15:00です。プロジェクトの背景を紹介するとともに、両方のテクノロジープレビューをデモします。

今後の予定
2027年第1四半期に、いくつかの機能を追加したうえで、Qt Bridgesのテクノロジープレビューを終了する予定です。
テクノロジープレビュー期間中のフィードバックが、最も役立ちます。うまく動いている点、足りない機能、作業の妨げになっている点を教えてください。
皆さまが作るものを楽しみにしています!