C++开发,这些GUI库一定不要错过

news2025/1/12 3:45:24

程序员宝藏库:https://gitee.com/sharetech_lee/CS-Books-Store

如果问Python这类集成度非常高的编程语言GUI开发用什么库,可以列举出很多不错的第三方库。

但是,如果这个问题放在C++这种基础的编程语言上,很多同学估计一时间都无从下手。

得益于强大的GitHub,我们想要的很多东西在这上面基本都可以找到对应的开源项目。

因此,这些年我就养成了一个每天花一到两个小时浏览GitHub的习惯,这个过程中发掘到很多宝藏项目,为了帮助到更多同学,我每周都会整理分享出来,感兴趣的可以看一下最近一期的分享:

Python开发者神器!这款搜索引擎比谷歌好用多了8 赞同 · 0 评论文章

回到问题本身,C++ GUI开发应该用什么库?

看过这么多项目,GUI开发这么重要的一个方向自然不会缺少,今天就来给大家分享几个非常不错的C++ GUI开发方面非常不错的库!

1. ImGui

Star:43.8k

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mA1NdeRz-1671198698159)(https://pic2.zhimg.com/80/v2-86a9cb6927948bd18811f10cd2b3c763_720w.gif)]

ImGui是一款轻量化、无依赖、功能强大的C++ GUI库,它具有快速、可移植、无依赖等亮点。

ImGui 的目标是实现快速迭代并使开发者能够创建工具和应用。它特别适合集成到游戏引擎、实时 3D 应用程序、全屏应用程序、嵌入式应用程序或操作系统功能非标准的控制台平台上的任何应用程序中。

简单概括,它具有如下特点:

  • 最小化状态同步
  • 最小化用户端的状态存储
  • 最大限度地减少设置和维护
  • 易于使用来创建反映动态数据集的动态 UI
  • 易于使用来创建代码驱动和数据驱动的工具
  • 易于使用来创建临时的短命工具和长命的、更精细的工具
  • 便携、最小化依赖、可移植
  • 性能高和低内存消耗

2. NanoGUI

Star:1.1k

img

NanoGUI 是用于 OpenGL 3+、GLES 2/3 和 Metal 的极简跨平台工具库。

基于NanoVG,它支持自动生成布局、有状态的 C++ lambdas 回调,内含很多高效的小部件类型和支持 Retina 的 Apple 设备渲染。

NanoGUI 目前适用于 Mac OS X (Clang)、Linux(GCC 或 Clang)、FreeBSD (Clang) 和 Windows(Visual Studio ≥ 2017)。

另外,需要说明,它需要最新的 C++17 编译器。

3. RmlUi

Star:1.5k

img

RmlUi 是基于 HTML 和 CSS 标准的 C++ GUI库,目标是为任何项目的界面需求提供完整的解决方案。 它是 libRocket 项目的一个分支,引入了新功能、修复了错误并改进了性能。

RmlUi 一个轻量级和高性能的库,拥有自己的布局引擎和很少的外部依赖。 从本质上讲,RmlUi 获取您的 HTML/CSS 类源文件并将它们转换为顶点、索引和绘制命令,然后使用自己的渲染器来绘制它们。

特点

  • 跨平台:Windows、macOS、Linux、iOS等。
  • 动态布局
  • 完整的动画和转换支持
  • 高效的应用程序范围样式,带有定制的模板引擎
  • 功能齐全的控件集:按钮、滑块、下拉菜单等

4. Elements

Star:2.4k

img

Elements是一个轻量级的、细粒度的、独立的、模块化的GUI库。

它可以在任何应用程序中使用,并且可以与其他GUI库和框架很好地配合。

另外,它使用起来非常简单,开箱就容易使用,并有大量的例子。

移植到一个新的主机目标也非常简单,只需要移植几个文件。

5. FTXUI

Star:3.9k

img

FTXUI是一款用于终端下用户界面开发的C++工具库。

功能风格方面受React启发,愈发非常简单,支持动画、绘画,而且无依赖、跨平台(Linux、macOS、WebAssembly、Windows)。

6. cocos2d-x

Star:16.7k

cocos2d-x是一个多平台框架,用于构建2D游戏、交互式界面及其他图形应用程序。

它基于cocos2d-iphone,但没有使用Objective-C,而是使用C++。它可以在iOS、Android、macOS、Windows和Linux上运行。

cocos2d-x框架结构:

img

cocos2d-x在功能方面可以说是非常全面,动作、效果、菜单、按钮、引擎、场景管理、动画、字体、响应键盘/鼠标、声音引擎等方面都有很完善的支持。

建议大家有空可以多浏览Github,有很多好用的开源免费工具。但是,目前Github上项目多如牛毛,而且刷榜现在也非常严重,想要找到优质的项目变得越来越难。这里,给大家推荐Github上一个非常不错的项目《DevWeekly》,这个项目每周都会精挑细选一些优质的开源项目,涵盖C++、JAVA、JavaScript、Python、Go等不同编程语言。此外,还有一些开源工具、优秀的技术文章,建议大家看一下:

hello,大家好,我是Jackpop,重点大学本科毕业后保送到哈工大计算数学专业读研,有多年国内头部互联网、IT公司工作经验,先后从事过计算机视觉、推荐系统、后端、数据等相关工作。如果同学们在升学考研、职业规划、高考志愿、简历优化、技术学习等方面有困惑,欢迎大家前来咨询!

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

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

相关文章

用Gurobi+python求解设施选址问题(facility location)

参考:Gurobi 官方资源 设施选址(Facility Location) 1.背景介绍 设施选址问题在许多工业领域如物流,通信等都有应用,在本案例中展示如何解决设施选址问题,决策出仓库的数量和地点,为一些超市…

Crash Consistency on File Systems: 文件系统一致性保证 (1) Journaling File System

文件系统是操作系统中管理用户数据的重要模块。其中一项重要的任务就是确保用户数据的在系统突然崩溃之后,系统能够恢复出完整、一致的用户数据。本文将会分析两种流行的文件系统,Journaling File System 和 Log-structured File System是如何确保数据的…

dataFactory连接mysql详细配置教程

场景:最近项目提出机构用户中其中一个部门下用户人数有20万,加载的时候十分缓慢,本地想重现的一下,这就需要在本地表中生成>20万的数据,搜索了网上的教程写的都是很粗略。 目录 dataFactory连接mysql配置 安装包下…

第二证券|“20cm”涨停!盘中暴涨110%,又有港股暴力拉升

A股商场今日上午窄幅动摇,电子等板块领涨。北向资金半响净买入额到达26.10亿元。 港股商场今日上午动摇也较为温和。不过,仍有个股剧烈动摇。比如浦江世界上午暴升,盘中涨幅一度超过110%。 A股窄幅动摇 电子板块领涨 今日上午A股商场全体体…

STL六大组件之算法

文章目录56、STL六大组件之遍历算法57、STL六大组件之查找算法158、STL六大组件之查找算法259、STL六大组件之统计算法60、STL六大组件之合并算法61、随机数(rand)和随机数种子(srand)的理解62、STL六大组件之随机算法(洗牌算法)6…

javaweb笔记

javaweb数据库jdbcmaven数据库 1.chart定长 2.分组查询:where>聚合函数>having 3.分页查询: select 字段列表 from limit 起始索引, 查询条目数 计算公式: 起始索引(当前页码-1)每页显示的条数 不同数据库分页查询不一样 4.like模糊查…

8种常见python运行错误,看看你中招了没?

人生苦短 我用python 对于刚入门Python的新手同学来说, 在运行代码时总免不了报错。 如何通过报错查找错误代码? 今天给大家总结了一些常见的报错类型, 每种报错都会有标有错误细节和错误行。 大家以后看到了,就更容易找出自…

使用navicat工具生成表的新增字段sql

1、在需要的表右键,设计表 2、点击【添加字段】 3、创建字段及注释,不要点【保存】和CtrlS 4、点击【SQL预览】 5、复制生成的sql语句

iframe 标签

一. 什么是 iframe 1. iframe 是 HTML元素,用于在网页中内嵌另外一个网页. 2. iframe 默认有一个宽高,存在边界. 3. iframe 是一个行内块级元素,可以通过 display 修改. 二. iframe 元素属性 1. src : 指定内联网页的地址 2. frameborder : iframe 默认有个边界,可以设置fram…

深入剖析Linux RCU原理(一)初窥门径

说明: Kernel版本:4.14ARM64处理器,Contex-A53,双核使用工具:Source Insight 3.5, Visio 1. 概述 RCU, Read-Copy-Update,是Linux内核中的一种同步机制。RCU常被描述为读写锁的替代品&#xf…

Openssl 1024bit RSA算法---公私钥获取和处理(一)

1.简介 使用OpenSSL生成公私钥文件,然后再将文件中的信息读出的操作。 由于要对设备升级,需要用到RSA算法对一部分验证信息进行加密. 2.使用OpenSSL获取公私钥 我在window系统尝试安装OpenSSL,但是安装不上,我们可以使用linux…

模式识别 第7、8章 特征的选择和提取

基本概念 问题的提出 特征→ 特征空间: 每一个特征对应特征空间的一个维度 ;特征越多,特征空间的维度越高原则:在保证分类效果的前提下用尽量少的特征来完成分类基本概念 (1)特征形成:由仪器…

如何去除图片雾化?给你推荐图片去雾怎么去除的方法

小伙伴们会不会和我一样喜欢外出爬山呢?为了留住美好记忆,我们会在途中拍照记录。但是山上很经常会有雾气,会容易导致我们拍出来的图片模糊不清。那应该怎么办呢?其实,我们只要对图片进行去雾处理就可以很好解决这个问…

[附源码]Nodejs计算机毕业设计基于的校园疫情防控管理Express(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置: Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分…

Web(十一)JavaScript知识训练-数学对象

1、Math.ceil(-3.14)的结果是( B)。 A、 -3.14 B、 -3 C、 -4 D、 3.14 2、Math.floor(-3.14)的结果是( C)。 A、 -3.14 B、 -3 C、 -4 D、 3.14 3、Math.round(-3.14)的结果是( B)。 A、 -3.14 B、 -3 C…

Spring Cloud Openfeign微服务接口调用与Hystrix集成实战

关于openfeign 可以认为OpenFeign是Feign的增强版,不同的是OpenFeign支持Spring MVC注解。OpenFeign和Feign底层都内置了Ribbon负载均衡组件,在导入OpenFeign依赖后无需专门导入Ribbon依赖,用做客户端负载均衡,去调用注册中心服务…

dataFactory向mysql批量插入测试数据

目录 第一步:准备阶段:datafactory已连接app_user的表 第二步: 点击原表app_user,其中属性界面properties中配置含义如下: 第三步:根据需要设置插入字段 第四步:设置每个字段的规则后,点击se…

病毒之Worm.Win32.AutoRun

题外话:在被奥密克戎包围的我(两个室友和我,一个低烧、一个咳嗽、就差我了,这属实是真被包围了丫)在和Worm.Win32.AutoRun决一死战… 本次Worm.Win32.AutoRun的来源: windows电脑上重装vscode,然后没有 mingw-get-setu…

浏览器兼容模式如何设置?只需要跟着下面的步骤设置

许多考生在报考教师资格证或者其他的考试报名,会遇到浏览器兼容设置的问题。与其到时急急忙忙来设置浏览器的兼容模式,不如提前设置好,免了后顾之忧。浏览器兼容模式怎么设置?一起来看看关于浏览器兼容模式的含义以及设置方式吧&a…

《Python代码审计》(1)一款超好用的代码扫描工具

1.前言 从本文开始,我将开始介绍Python源代码审计,代码审计是检查源代码中的安全缺陷,检查源代码是否存在安全隐患,或者编码不规范的地方。通常使用自动化工具或者人工审查的方式,自动化工具效率高,但是误…