桌面软件开发框架

news2024/12/23 7:55:30

一、Qt

官网:https://www.qt.io/

C++ 领域最流行的跨平台桌面端软件开发框架,Qt 有界面描述语言(XML 描述界面),可以通过设计器拖拽空间设计界面,编译期界面描述语言被转义成 C++ 代码

 Python 基于 PyQt 做 Qt 应用。

二、GTK

官网:https://www.gtk.org/

GTK 是 C 语言开发的,但有很多语言的绑定,比如官方支持的 JavaScript、Rust 等,当然用 C++ 语言操作 GTK 也很方便,自绘引擎(Cairo)

Linux 操作系统领域流行,有非常多的 Linux 桌面软件都是基于 GTK 开发的,

 三:CEF

官网:https://bitbucket.org/chromiumembedded/cef/src/master/

CEF 是 2008 年创立的,基于 Chromium 的跨平台 GUI 框架,比如微信桌面端、网易云音乐桌面端(Win)、QQ 桌面端、微信桌面端、MATLAB、FoxMail、OBS Studio,装机量破亿

CEF 是 Chromium Embedded Framework 的简写,顾名思义,这是一个把 Chromium 嵌入其他应用的框架。这个开源项目是 Marshall Greenblatt 在 2008 年创立的,由 C/C++ 编写而成,它通过提供稳定的 API 来避免开发者被 Blink、V8、Chromium 等复杂的代码逻辑所困扰。CEF 非常注重开发者的使用体验,很多功能都有默认实现方式,遵从约定优于配置的原则,开发者可以很轻松地驾驭 CEF 框架

CEF 的系列课程:https://juejin.cn/book/7075387142121193502

四、NW.js

官网:https://nwjs.io/

NW.js 最早把 Chromium 和 Node 绑定到一起,用前端知识做界面,用 Node 技术访问操作系统,NW.js 基于 MIT 开源,可以无忧使用,用的人越来越少,维护的投入也不如 Electron 大

五、Electron

官网:https://www.electronjs.org/

Electron 的作者曾经在 NW.js 团队工作过(NW.js 项目贡献第二多的人就是 Electron 的作者),

浏览器相关的 API,还是系统级 API,Electron 提供的都比 NW.js 多

六、TAURI

官网:https://tauri.studio/

采用的技术方案与 webview 类似,开源免费。webview 框架碰到的问题 TAURI 都有,使用 Rust 开发,将来会支持 Deno,作者说将来会直接使用 webview 的技术来支持多平台

七、webview

官网:https://github.com/webview/webview

Mac  Cocoa/WebKit,Linux  gtk-webkit2,Windows 10  Edge,开源且免费(MIT)有 go、Rust、Python 等语言的绑定,不过官方支持的是 go 语言,C 和 C++,操作浏览器的 API 非常少

八、webview2

官网:https://developer.microsoft.com/zh-cn/microsoft-edge/webview2/

webview2微软 Edge 浏览器团队推出的跨平台 GUI 引擎,是闭源的,封了一个 Chromium 浏览器核心,多进程架构,甚至比 Electron 还要多一个进程(为了复用二进制资源),资源占用比较多。

九、flutter-desktop

官网:https://docs.flutter.dev/desktop

谷歌的跨平台开发框架,开源、免费、文档齐全、投入力度大且持久,flutter desktop 端都比较稳(skia 自绘引擎)

十、Compose Multiplatform

官网:https://www.jetbrains.com/lp/compose-mpp/

Compose Multiplatform是JetBrains 搞的跨平台 GUI 框架,自绘引擎用的是 Google 的 skia,这个自绘引擎稳的很,Chrome 和 Flutter 都是用的它,

渲染之类的工作不太会出问题。比 Java 生态圈里的 Swing 和 JavaFx 

JetBrains 对 Kotlin 开发者兼容很好,Java 生态下的也兼容,访问系统级 API 很友好

十一、MAUI

官网:https://github.com/dotnet/maui

微软的跨平台 GUI 框架,不仅仅支持桌面端,还支持移动端,但官方并不支持 Linux 的桌面端,

是.NET 平台下的 GUI 框架,有自绘引擎,对 C# 开发者很友好,界面依然是用 XAML 描述的

十二、Sciter

官网:https://www.qt.io/

Sciter 是 2006 年创建的跨平台闭源 GUI 框架,商业授权问题,内部封装浏览器核心,对浏览器核心进行精简,不像 Electron 和 NW.js 动辄上百兆的体积,它只要 6M 左右就够了。底层的绘制引擎我记得是谷歌的 skia。

集成了 Fabrice Bellard 大神的 QuickJs 之后,就全面支持 JavaScript , C++ 开发,对 C++ 开发者很友好,有 Rust、go、Python 等语言的绑定。

 RmlUi 和 Sciter 很像,可以看成 Sciter 的替代框架

十三、Duilib

官网:https://github.com/duilib/

 2010 年国内一个开发者开发的 GUI 开发框架,底层基于 DirectUI 开发,所以只支持 Windows 平台,不支持跨平台,基于这个技术做桌面端应用,比如网易、腾讯、百度

十四、FLTK

官网:https://www.fltk.org/

FLTK 是 1998 年创建的跨平台开源 GUI 框架,非常轻量级,支持静态连接,一个简单的应用编译后只有 500K 左右, OpenGL自绘引擎

十五、wxWidgets

官网:​www.wxwidgets.org/

wxWidgets 是 1992 年英国的一个大学教授开创的跨平台 GUI 软件,也非常成熟稳定,商业授权非常友好, C++ 开发的,兼容跨平台,Windows 是 Windows 窗口风格、Linux 是 Linux 窗口风格

十六、ImGui

官网:https://github.com/ocornut/imgui

GUI 框架的实现原理和开发方式可谓独树一帜,支持很多种绘制引擎比如 OpenGL,Directx,Vulkan 等

框架:GitHub - Immediate-Mode-UI/Nuklear: A single-header ANSI C immediate mode cross-platform GUI library

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/929994.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【android12-linux-5.1】【ST芯片】驱动与HAL移植后数据方向异常

ST的传感器驱动与HAL一直成功后,能拿到数据了,但是设备是横屏,系统默认是竖屏。就会出现屏幕自动转动时方向是错的的情况,设备横立展示的是竖屏,设备竖立展示的是横屏。 这个是PCB上设计的传感器贴片方向和横屏不一致…

Linux:基础指令

目录 Linux的基础指令 1.ls指令 2.pwd指令 3.cd指令 4.touch指令 5.mkdir指令 6.rmdir指令和rm指令 7.man指令(重要) 8.cp指令(重要) 9.mv指令(重要) 10.cat指令 11.nano指令 12.more指令 13.…

7个用于机器学习和数据科学的基本 Python 库

推荐:使用 NSDT场景编辑器 助你快速搭建3D应用场景 这篇文章针对的是刚开始使用Python进行AI的人,以及那些有经验的人,但对下一步要学习什么有疑问的人。我们将不时花点时间向初学者介绍基本术语和概念。如果您已经熟悉它们,我们鼓…

Moonbeam生态跨链互操作项目汇总

立秋已过,今年的夏天已经接近尾声,即将迎来凉爽的秋天。Moonbeam生态一同以往持续成长,在8月也举办了不少活动、完成集成合作以及协议更新。让我们一同快速了解Moonbeam生态项目近期发生的大小事件吧! Moonwell Moonwell是一个建…

《Kubernetes故障篇:Container runtime network not ready》

一、环境信息 操作系统K8S版本containerd版本Centos7.6v1.24.17v1.6.12 二、背景信息 1、通过以下命令检查网络插件的状态,发现网络插件coredns处于pending状态 2、通过以下命令检查kubelet服务状态,发现Container runtime network not ready等报错 三…

yolov5添加SimAM注意力机制(yolov7同理)

SimAM注意力机制简介 关于SIMAM注意力机制的原理这里不再详细解释,这篇发在Proceeddings of the 38th Internation Conference on Machine Learning.论文参考如下论文链接here   yolov5中添加SimAM注意力机制 注意力机制分为接收通道数和不接受通道数两种。这次属于不接受通…

自制编程语言基于c语言实验记录之二:总结三四五六七章之编译类定义

博客前言 由于本书第六七章是编译脚本语言sparrow生成指令、虚拟机运行指令的核心章节,需要连在一起理解,同时三四五章都是六七章的铺垫,所以专门写多篇博客来记录六七章。 同时本书相比《操作系统真相还原》缺少具体例子很难梳理项目整体代…

如何解决“缺失msvcp110.dll”错误,msvcp110.dll丢失要怎样才能修复

今天,我将为大家分享关于电脑提示msvcp110.dll丢失的3种修复方法。希望这些方法能帮助到正在遇到这个问题的朋友们。 首先,我们来了解一下msvcp110.dll文件的作用。msvcp110.dll是Microsoft Visual C 2010 Redistributable Package的一部分,…

【android12-linux-5.1】【ST芯片】HAL移植后没调起来

ST传感器芯片HAL按官方文档移植后&#xff0c;测试一直掉不起来&#xff0c;加的日志没出来。经过分析&#xff0c;是系统自带了一个HAL&#xff0c;影响的。 按照官方文档&#xff0c;移植HAL后&#xff0c;在/device/<vendor\>/<board\>/device.mk*路径增加PROD…

leetcode刷题(字符串相加、包含每个查询的最小区间、模拟行走机器人、环形子数组的最大和、满足不等式的最大值、四数之和、树中距离之和)

目录 1、字符串相加 2、包含每个查询的最小区间 3、模拟行走机器人 4、环形子数组的最大和 5、满足不等式的最大值 6、四数之和 7、 树中距离之和 1、字符串相加 class Solution:def addStrings(self, num1: str, num2: str) -> str:i len(num1) - 1 # num1的末…

温故知新之:代理模式,静态代理和动态代理(JDK动态代理)

0、前言 代理模式可以在不修改被代理对象的基础上&#xff0c;通过扩展代理类&#xff0c;进行一些功能的附加与增强。 1、静态代理 静态代理是一种代理模式的实现方式&#xff0c;它在编译期间就已经确定了代理对象&#xff0c;需要为每一个被代理对象创建一个代理类。静态代…

Spring与MyBatis集成 AOP整合PageHelper插件

目录 1.什么是集成&#xff1f; 2.Spring与MyBatis集成 3.Spring与MyBatis集成的基本配置 4.AOP整合PageHelper插件 1.什么是集成&#xff1f; 集成是指将不同的组件、框架或系统整合到一起&#xff0c;使它们可以协同工作、相互调用、共享资源等。通过集成&#xff0c;可以…

浏览器的事件循环

其实在我们电脑的操作系统中&#xff0c;每一个运行的程序都会由自己的进程&#xff08;可能是一个&#xff0c;也可能有多个&#xff09;&#xff0c;浏览器就是一个程序&#xff0c;它的运行在操作系统中&#xff0c;拥有一组自己的进程&#xff08;主进程&#xff0c;渲染进…

咸虾米之一些快捷方式的操作,一行方块的左右滑动,方块在一区域内的任意移动

由于本着只学习微信小程序的目的&#xff0c;上面的几篇博文都是跟着黑马程序的课程走的&#xff01;后面的就讲解uni-app的实验呢&#xff01;一个人的精力是有限的&#xff0c;于是换了们课程继续深造微信小程序&#xff01;&#xff01;&#xff01; 以下是在 .wxml中的一些…

leetcode 541.反转字符串II

⭐️ 题目描述 &#x1f31f; leetcode链接&#xff1a;https://leetcode.cn/problems/reverse-string-ii/ ps&#xff1a; 这道题描述的有点晦涩难懂&#xff0c;意思就是每隔k个反转k个&#xff0c;末尾不够k个时全部反转&#xff0c;开始就不够k个也全部反转。 代码&#…

C++day5(静态成员、类的继承、多继承)

一、Xmind整理&#xff1a; 二、上课笔记整理&#xff1a; 1.静态数据成员静态成员函数&#xff08;银行账户实例&#xff09; #include <iostream>using namespace std;class BankAccount { private:double balance; //余额static double interest_rate; //利率 p…

本地部署 Stable Diffusion(Mac 系统)

在 Mac 系统本地部署 Stable Diffusion 与在 Windows 系统下本地部署的方法本质上是差不多的。 一、安装 Homebrew Homebrew 是一个流行的 macOS &#xff08;或 Linux&#xff09;软件包管理器&#xff0c;用于自动下载、编译和安装各种命令行工具和应用程序。有关说明请访问官…

创建K8s pod Webhook

目录 1.前提条件 2.开始创建核心组件Pod的Webhook 2.1.什么是Webhook 2.2.在本地k8s集群安装cert-manager 2.3.创建一个空的文件夹 2.4. 生成工程框架 2.5. 生成核心组件Pod的API 2.6.生成Webhook 2.7.开始实现Webhook相关代码 2.7.1.修改相关配置 2.7.2.修改代码 2…

2023最新AI创作系统ChatGPT网站源码V2.6.0+详细图文搭建安装教程/GPT联网/支持ai绘画+Dall-E2绘画/支持MJ以图生图

一、AI系统 如何搭建部署AI创作ChatGPT系统呢&#xff1f;小编这里写一个详细图文教程吧&#xff01; SparkAi使用Nestjs和Vue3框架技术&#xff0c;持续集成AI能力到AIGC系统&#xff01; 程序核心功能 程序已支持ChatGPT3.5/4.0提问、AI绘画、Midjourney绘画&#xff08;…

Vue2向Vue3过度核心技术组件通信

目录 1 组件基础知识scoped解决样式冲突1.1 默认情况&#xff1a;1.2 代码演示1.3 scoped原理1.4 总结 2 组件基础知识data必须是一个函数2.1 data为什么要写成函数2.2 代码演示2.3 总结 3 组件通信3.1 什么是组件通信&#xff1f;3.2 组件之间如何通信3.3 组件关系分类3.4 通信…