Qt优秀开源项目之二十一:遇见QSkinny,一个轻量级Qt UI库

news2024/11/18 7:35:55

目录

一.QSkinny简介

二.工作原理

三.编译


一.QSkinny简介

QSkinny库基于Qt Graphic View和Qt/Quick中少量的核心类。它提供了一组轻量级控件,可以在C++或QML中使用这些控件。QSkinny默认是启用硬件加速的,非常适合嵌入式设备,目前已经应用于大量汽车GUI的代码实现中。正如预期的那样,它有良好的启动性能和低内存占用率。
github地址:https://github.com/uwerat/qskinny
QSkinny能在支持Qt/Quick的所有平台上运行,但目前只在Linux上得到了充分的测试。理论上支持所有Qt>=5.15的版本,推荐使用下面这三个版本:
●Qt 5.15
●最新的LTS(long term supported)版本 ,当前是 Qt 6.5.x 
●最新的Qt版本,当前是 Qt 6.6.x
先上几张图看看:
1.汽车中控仪表盘,已用于大型汽车项目中:


2.进度条

二.工作原理

用QSkinny写一个“Hello World”程序

int main(int argc, char** argv)
{
    QGuiApplication app(argc, argv);
    QskWindow window;
    window.resize(200, 200);
    auto box = new QskLinearBox(Qt::Vertical);
    auto button = new QskPushButton("push me", box);
    auto label = new QskTextLabel("label", box);
    window.addItem(box);
    window.show();
    return app.exec();
}

用QSkinny API写代码的方式是不是很熟悉?没错,和用QtWidgets差不多,因为它们有类似的控件,比如 text labels、push buttons, layouts、dialogs等等。
下图揭示了QSkinny、QML和QtWidgets直接的关系:

上图包含的层次结构如下:
●QSkinny: C++ UI控件 
●QML engine: 解析UI文件的declarative / JavaScript引擎 
●QtQuick: UI控件的基础框架 (包含了诸如 x/y坐标和焦点的处理)  
●Qt scene graph: 利用硬件加速的绘图单元
●OpenGL: 利用硬件加速的绘图API 
●QtWidgets: 为桌面用户设计的C++ UI控件 
●Qt raster paint engine: software (非硬件加速) 绘图引擎
●QPainter API: 可以绘制图形、图像和文字的API
下面再看一个换肤的例子:将所有按钮的文字设置为蓝色,背景设置为绿色,padding为10像素

setGradient( QskPushButton::Panel, Qt::green );
setColor( QskPushButton::Text, Qt::blue );
setMargins( QskPushButton::Panel | QskAspect::Padding, 10 );

只需把颜色替换为不同的值就能触发重绘,换肤就是如此简单。

三.编译

我的编译环境
Window 10
Qt 6.6.1 mingw_64
用Qt 6.6.1自带的Qt Creator打开源码中的CMakeLists.txt文件(...\qskinny-master\CMakeLists.txt),几分钟就能编译好,编译无报错,编译结果如下图所示:

图中箭头所指的两个目录里是Demo,比较坑的是编译出的dll分散在各个目录,需要拷贝过去,如下图所示:

参考链接:Meet QSkinny, a lightweight Qt UI library   
原文链接:Qt优秀开源项目之二十一:遇见QSkinny,一个轻量级Qt UI库-CSDN博客

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

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

相关文章

react hooks 高德地图的应用

一、准备 1.登录控制台 登录 高德开放平台控制台,如果没有开发者账号,请 注册开发者。 2.创建 key 进入应用管理,创建新应用,新应用中添加 key,服务平台选择 Web端(JS API)。 3.获取 key 和密钥 创建成功后&#x…

Jenkins+nexus

jiekins安装完成 1、安装java环境 [rootnexus ~]# tar -xf jdk-8u211-linux-x64.tar.gz -C /usr/local [rootnexus ~]# vim /etc/profile.d/java.sh JAVA_HOME/usr/local/jdk1.8.0_211 PATH$PATH:$JAVA_HOME/bin [rootnexus ~]# source /etc/profile.d/java.sh 必须要选择与n…

使用Notepad++将多行数据合并成一行

步骤 1、按CtrlF,弹出“替换”的窗口; 2、选择“替换”菜单; 3、“查找目标”内容输入为:\r\n; 4、“替换为”内容为空; 5、“查找模式”选择为正则表达式; 6、设置好之后,点击“全…

Unity URP下阴影锯齿

1.概述 在Unity开发的URP项目中出现阴影有明显锯齿。如下图所示: 并且在主光源的Shadow Type已经是Soft Shadows模式了。 2.URP Asset 阴影出现锯齿说明阴影质量不高,所以要先找到URP Asset文件进行阴影质量参数的设置。 1.打开PlayerSetting找到Graph…

概率论与数理统计-第6章 参数估计

6.1 点估计问题概述 一、点估计的概念 二、评价估计量的标准 无偏性 定义1:设^ θ(X1,…,Xn)是未知参数θ的估计量,若E(^ θ)θ,则称^θ为θ的无偏估计量定理1:设X1,…,Xn,为取自总体X的样本,总体X的均值为μ,方差为…

LT8911EX LVDS 转 eDP

概述 Lontium LT8911EX 是 LVDS 至 eDP 转换器,具有单端口或双端口可配置 LVDS 接收器,具有 1 个时钟通道和多达 8 个数据通道,每个数据通道的最大工作速率为 1.2Gbps,最大输入带宽为 9.6Gbps。该转换器对输入LVDS数据进行反串行…

上海亚商投顾:创业板指放量涨近2% 全市场超4400只个股上涨

上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。 一.市场情绪 沪指昨日震荡反弹,创业板指午后涨超2%。华为概念股爆发,鸿蒙方向领涨,创识…

聚乙烯PE的特性有哪些?UV胶水能够粘接聚乙烯PE吗?

聚乙烯(Polyethylene,PE)是一种聚合物,是由乙烯(ethylene)单体通过聚合反应形成的合成塑料。以下是聚乙烯的一些主要化学特性: 1.化学式: 聚乙烯的基本化学式是 (C2H4)n,…

闩锁效应(Latch-up)

闩锁效应(Latch-up)原理解析 什么是闩锁效应(Latch-up)? 在CMOS N阱设计中,实际上是由于CMOS电路中基极和集电极相互连接的两个PNP和NPN双极性BJT管子(下图中,侧面式NPN和垂直式PNP)的回路放大…

python股票分析挖掘预测技术指标知识跳空缺口指标详解(5)

本人股市多年的老韭菜,各种股票分析书籍,技术指标书籍阅历无数,萌发想法,何不自己开发个股票预测分析软件,选择python因为够强大,它提供了很多高效便捷的数据分析工具包。 我们已经初步的接触与学习其中数…

Discourse 未活动的用户是怎么处理的

Discourse 目前有一个参数为 clean up inactive users after days 来控制不活跃或者未激活的用户。 如果你的用户满足下面的条件的话,系统将会在到期后对用户进行清理和删除 从未在 Discourse 站点上发布任何内容 如果你在 Discourse 站点上发布了内容&#xff0c…

使用srs_librtmp实现RTMP推流

1、背景 由于项目有需求在一个现有的产品上增加RTMP推流的功能,目前只推视频流。 2、方案选择 由于是在现有的产品上新增功能,那么为了减少总的成本,故选择只动应用软件的来实现需求。 现有的产品中的第三方库比较有限,连个ffmp…

2024深圳国际电池创新技术交流展览会

2024深圳国际电池创新技术交流展览会 2024 Shenzhen International Battery Technology Exchange Exhibition 时间:2024年08月28-30日 地点:深圳国际会展中心(国际) 详询主办方陆先生 I38(前三位) I82I(中间四位…

【C语言】ipoib驱动 - ipoib_cm_post_receive_nonsrq_rss函数

一、ipoib_cm_post_receive_nonsrq_rss函数定义 static int ipoib_cm_post_receive_nonsrq_rss(struct net_device *dev,struct ipoib_cm_rx *rx, int id) {struct ipoib_dev_priv *priv ipoib_priv(dev);struct ipoib_recv_ring *recv_ring priv->recv_ring rx->ind…

首个云原生、分布式、全栈国产化银行核心业务系统投产上线丨TiDB × 杭州银行

日前,杭州银行新一代核心业务系统成功投产上线。 新核心系统是业内首个实际投产的云原生、分布式、全栈国产化的银行核心系统,是金融科技领域突破关键核心技术应用的重大实践。 新核心系统自上线以来运行安全稳定,大幅提升了业务处理效率&am…

基于JavaWeb+BS架构+SpringBoot+Vue基于hive旅游数据的分析与应用系统的设计和实现

基于JavaWebBS架构SpringBootVue基于hive旅游数据的分析与应用系统的设计和实现 文末获取源码Lun文目录前言主要技术系统设计功能截图订阅经典源码专栏Java项目精品实战案例《500套》 源码获取 文末获取源码 Lun文目录 1 概 述 5 1.1 研究背景 5 1.2 研究意义 5 1.3 研究内容…

香港Web3:Web3的新热土

相关推荐点击查看TechubNews 随着区块链技术的快速发展,Web3的概念逐渐在全球范围内受到关注。作为亚洲的金融中心,香港在Web3领域也展现出了极大的热情和潜力。本文将探讨香港在Web3领域的发展现状、机遇与挑战。 一、香港Web3的发展现状 香港在Web3…

使用python执行系统命令的五种方式

在日常开发中,有时需要在Python脚本中执行系统命令,Python有五种方式来执行系统命令,推荐使用第五种。 python执行系统命令的五种方式 方法1: os.system 这是最简单的方法,适合简单的业务场景,输入为完整命令字符串…

用Python做一个2048小游戏

文章目录 逻辑设计绘图逻辑主循环 逻辑设计 2048的逻辑无非是操作 4 4 4\times4 44的方格,每个方格中有一个数,这些数可以移动,如果两个相同的数字在移动时相撞了,就可以彼此合并。 而这个 4 4 4\times4 44的方格,…

scratch考试“画图”相关考点一网打尽

最近2023年12月17日举行的第15届蓝桥STEMA测评Scratch编程初/中级组编程第3题—六花阵图 在讲解这个题目,可以延申scratch所有的基础图形,学会这篇,碰到关于“图形”类题目基本上都可以搞定 六花阵图 编程实现: 六花阵图。 注…