Skip to main content

通过 Qt 桥接技术实现跨平台 C# UI 框架

评论

每一个 C# UI 框架都遵循着相似的模式:以 Windows 为核心,Linux 支持缺席,产品路线图前景不明。WPF 已陷入停滞,MAUI 跳过了 Linux,WinUI 3 则始终局限于 Windows 原生环境。与此同时,嵌入式 Linux 的需求持续增长,C# 开发团队在 Linux 上始终缺乏优质的 UI 替代方案。Qt Bridges for C# 是一款面向 C# 的桥接技术,目前处于公测阶段,开发者无需放弃现有 C# 代码库,即可充分利用 Qt Quick 功能丰富的 UI 库与 API、硬件加速以及跨平台能力。

什么是 Qt Bridge for C#?

Qt Bridges 是一项前瞻性桥接技术,旨在使单一前端实现可与多种后端编程语言配合使用。对于 C# 而言,它实际上提供了一种全新的跨平台替代方案,可取代现有 C# UI 框架。目前,C# 桥接功能已作为公测版本发布

C# 桥接将 C# 应用逻辑层直接连接至 Qt Quick——Qt 久经验证的 UI 框架(全球汽车仪表盘和医疗设备中广泛使用的正是这套框架)——无需放弃现有代码库、.NET 集成或团队已熟悉的开发方式。硬件加速、对 Linux 上 C# 的原生支持,以及通过 HWND 嵌入实现的渐进式 WPF 迁移路径,均已包含在内。您的开发工作流保持不变,改变的是您所能交付的产品边界。

试用 Qt Bridges for C#

如何开始使用

Qt Bridge 作为 C# UI 框架的工作原理

在使用 C# 和 QML 编写应用程序时,该桥接会为 C# 类型提供基于 Qt 的原生封装层。这些封装层将处理所有互操作任务,如对象实例化、方法调用、事件通知等。有了这些封装,便可以在 QML 中引用 C# 类型,如下例所示:

C#
public class CSharpBackend
{
    public string Data
    {
        get => "Hello from C#!";
    }
}

 

QML
ApplicationWindow {

    CSharpBackend { id: backend }

    Text { text: backend.data }
}

 

 

A "hello world" example of using Qt as a C# UI framework

 

在当前可用的 Qt Bridges C# UI 框架版本中,原生封装层以 C++ 代码形式生成,因此需要 C++ 编译器/工具链(使用 Visual Studio 时,必须安装「使用 C++ 的桌面开发」工具包)。我们目前正在开发运行时配置的互操作模型,以在构建阶段消除对 C++ 工具链的依赖。

C# Bridge 入门指南

Qt Bridges for C# 目前作为 C# UI 框架,支持 Windows 和 Linux 平台。

Windows / Visual Studio 上的 C#

在 Windows 上使用 C# 桥接最便捷的方式,是安装 Visual Studio 扩展,并基于内置项目模板创建 C# + QML 应用程序。

安装 Qt Bridge for C# Visual Studio 扩展:

  1. 打开 Visual Studio 扩展管理器:

    • Extensions > Manage Extensions…

  2. 搜索 Qt Bridge for C# 扩展,然后选择安装。

    Installing Qt Bridges as a C# UI framework for Windows

创建 C# + QML 应用程序项目

  1. 选择新建项目选项:

    • File > New > Project/Solution

  2. 在搜索模板框中输入 QML,等待搜索结果显示。

  3. 选择 QML Application 项目模板。

  4. 点击「下一步」。

  5. 在「配置新项目」窗口中,设置项目名称,然后点击「下一步」。

  6. (可选)勾选「向项目添加示例代码」复选框,创建包含 C# 和 QML 示例代码的项目。

  7. 点击「创建」。

Visual Studio 生成项目后,可打开源文件查看添加至项目的代码,然后按 F5 键构建并运行应用程序。

 

Linux 上的 C#

若要在 Linux 上使用 Qt Bridge for C#,请安装模板包,然后基于 C# + QML 应用程序模板创建新项目。使用 C# 桥接需要先安装 Qt for Linux

配置 Qt Bridge for C#

安装模板包:

  • $ dotnet new install QtGroup.Qt.Bridge.CSharp.Templates

配置 Qt for Linux 安装路径,例如:

  • $ export QtDir=~/Qt/6.11.1/gcc_64

创建 C# + QML 应用程序项目

  • $ dotnet new qt --Framework net8.0 --SampleCode

构建并运行应用程序

  • $ dotnet run

后续计划

欢迎体验,并在 Qt Bridge for C# 文档中深入了解,同时欢迎提供您的反馈。

试用 Qt Bridges for C#

如何开始使用

我们目前正朝着发布经过完善的 C# 桥接技术预览版(Technology Preview,TP)的目标继续前进。

此外,也欢迎分享您在现有前端框架中遭遇 Linux C# 支持缺失的亲身体验——我们的判断是,一旦开发范围超出 Windows 生态系统,便几乎找不到一款能够满足需求的 C# UI 框架。随着嵌入式 Linux 需求持续增长,我们很想知道:各种变通方案拼凑在一起,是否真的如我们所预想的那般痛苦?

您的反馈对于将这一技术打造为 C# 最佳 UI 方案至关重要,期待您的声音。欢迎通过 Qt Bridges 论坛参与讨论,并注册订阅以获取项目最新动态。

评论

Subscribe to our blog

Try Qt 6.11 Now!

Download the latest release here: www.qt.io/download

Qt 6.11 is now available, with new features and improvements for application developers and device creators.

We're Hiring

Check out all our open positions here and follow us on Instagram to see what it's like to be #QtPeople.