Skip to main content

Qt Bridgesテクノロジープレビュー:RustとC#開発者向けのQt Quick UI

コメント

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

QtBridges-FeaturedImage-1200x628

本日、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 Rustを試す

Rust GUIを始める

Qt Bridge for C#

Qt Bridge for C#は、既存のアプリケーションを書き直すことなく、モダンでクロスプラットフォームなUIを実現したい.NETチーム向けです。既存のC#コードはそのままに、その上にQt Quickのフロントエンドを追加できます。

C#ブリッジでは、次のことができます。

  • C#オブジェクトをQMLの要素に公開する
  • QMLからC#プロパティを読み書き・バインドする
  • C#メソッドを呼び出し、C#イベントを処理する
  • QMLのビューをC#のコレクションにバインドする

詳しくは、ドキュメントをご覧ください。

 

Qt Bridge for C#を試す

C# GUIを始める

 

Visual Studio拡張機能

Windowsの場合は、Visual Studio向けのQt Bridge for C#拡張機能が最も手軽な始め方です。プロジェクトテンプレートとアイテムテンプレートが追加されるため、dotnetテンプレートを個別にインストールする必要はありません。この拡張機能で作成したプロジェクトには、適切なNuGetパッケージが自動的に参照されます。さらに、プロジェクトをビルドするとC#の型に対するQML IntelliSenseが使えるよう、QML言語サーバーのサポートも有効になります。

  1. Visual Studioで**拡張機能 > 拡張機能の管理…**を開き、*Qt Bridge for C#*を検索してインストールする
  2. ファイル > 新規作成 > プロジェクトを選び、QMLを検索してQML Applicationテンプレートを選択する
  3. 必要に応じてAdd sample code to projectを選択する
  4. 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です。プロジェクトの背景を紹介するとともに、両方のテクノロジープレビューをデモします。

bridges-webinar


今後の予定

2027年第1四半期に、いくつかの機能を追加したうえで、Qt Bridgesのテクノロジープレビューを終了する予定です。

テクノロジープレビュー期間中のフィードバックが、最も役立ちます。うまく動いている点、足りない機能、作業の妨げになっている点を教えてください。

 

皆さまが作るものを楽しみにしています!

コメント

ブログを購読

Qt 6.12 を
今すぐ試そう!

最新リリースはこちらからダウンロードできます。 www.qt.io/download

Qt 6.12 LTS がリリースされました!アプリケーション開発者やデバイス開発者向けに、多くの新機能と改善が追加されています。 

採用情報 

現在、さまざまなポジションで採用を行っています。募集職種はこちら をご覧ください。また、Instagram をフォローして #QtPeople の働き方もぜひチェックしてください。