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

立即体验 Qt 6.12!

点击此处下载最新版本:www.qt.io/download

Qt 6.12 LTS 现已发布,为应用程序开发者和设备制造商带来了新功能和改进。

我们正在招聘

点击此处查看所有职位空缺并关注我们的Instagram账号,了解成为#QtPeople的感受。