百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

时隔八年!Qt6官宣下月发布,Qt quick全新升级

ahcoder 2025-02-28 14:36 13 浏览

Qt Quick Controls 1是我们第一个QML的UI框架。这些控件主要是用QML编写的,没有使用太多的C++。当时,QML还是一种新技术,这意味着我们在性能设计方面没有足够的经验,不知道会有什么结果。因此,造型API在设计上最终是低效的,它有很多肥大的委托,在控制逻辑和造型上都使用了大量的JavaScript、绑定、自省、Loaders和QObjects。它还存在对Qt Widgets的链接依赖,以获得本地的样式和基于Widget的对话框。而如果没有我们今天的QML编译器,这一切最终都是一种相当缓慢和混乱的方法。Qt Quick Controls 2是当我们意识到它在嵌入式硬件上的表现也不好时重新考虑解决方案。

Qt Quick Controls 2

对于 Controls 2,我们的基本想法是将大部分的实现从 QML 转移到 C++。通过这样做,我们的目标是尽可能地精简代表,而不是从C++中去做繁重的工作。这包括所有的控制逻辑、鼠标、触摸、事件处理、API等等。只有视觉效果被留在QML中定义。这就导致了精简的委托,更少的运行时开销,更少的内存使用,更清晰的代码流,以及更快的执行速度。

但有一点是目前为止一直缺少的,那就是对原生桌面样式的支持。Controls 2的主要动机是在嵌入式设备上实现良好的性能,由于我们有桌面的Qt Widgets,我们算是接受了一些基本的桌面功能缺失。我们提供了有开放文档的样式(Universal,Material),并使创建自定义的样式变得容易。但现在,自Qt 5.12以来,Controls 1已经被废弃,并且也将被排除在Qt 6二进制包之外,现在是时候重新开发面向桌面的样式了。

本地桌面风格

在 Qt 6.0 中,我们为 Controls 2 增加了两种新的桌面风格:Windows 和 macOS。与现有的Fusion风格使用Qt Quick基元不同,这些新风格使用QStyle进行绘制。原因是它仍然能很好地与 "低级 "平台API对接,以获得真正的原生样式。但我们并没有与Widgets共享QStyle,而是专门为Controls制作了一份专属副本。后者听起来可能很奇怪,因为我们很自然地认为共享一个代码库是一种更简单的方法。但原因有几个:首先,我们不想破坏Widgets或任何第三方的风格。而且我们不能在不破坏源码兼容性的情况下将QStyle从Widgets中剔除。QStyle不仅在它的API中到处都有对Widgets的引用,而且它还直接使用了Widgets本身的枚举和常量。同时,我们也不希望 Controls 在未来很长一段时间内对 Widgets 产生依赖性。

另一个原因是,我们希望能够自由地在任何我们认为合适的地方修改代码。我们可以通过很多方法来优化QStyle-copy,以更好地适应Qt Quick场景图和Controls styling API。其中一个变化是,我们只使用QStyle来绘制控件的背景。同样的背景贴图将被缓存并重用于所有相同类型的控件,并在QSGNinePatchNode的帮助下缩放到正确的大小。文本和前景将使用正常的QML渲染在上面。而对于所有这样的差异,我们希望能够在不受限制或担心保持与Widgets的兼容性的情况下实现它们。出于同样的原因,我们使用QStyle进行绘制是一个私人的实现细节。Controls已经有了一个很好的样式API,我们不想再引入和维护第二个。

最后,我们不一定要让原生样式看起来和Widgets完全一样。对于一些控件,我们使用了一种混合的方法,用QML在QStyle绘制的纹理上添加动画和渐变效果。最后,我们真正想要的是让原生样式具有流畅的性能,并且尽可能地看起来 "原生",而不一定要像Widgets一样。

Qt 6.0准备了什么?

对于 Qt 6.0,大多数控件都会被新的桌面样式所支持。但并不是所有的控件都支持。将被遗漏的是那些目前在QStyle中还没有实现的控件,比如Switch或RangeSlider。它们仍然可以使用,但将用Fusion风格绘制。缺失的控件将在即将发布的Qt中逐步得到支持,原生对话框和菜单也是如此。如果我们看得更远,我们的计划包括提供更多以桌面为中心的控件,这些控件你可能会在今天的Widgets或本地工具包中找到。

所以,还有很多事情要做。但是,我们认为新的桌面风格是未来几年内让Controls与Widgets在桌面开发方面平起平坐的第一步。

下面是使用新的桌面样式运行的Qt Quick Controls 2应用程序的截图。需要注意的是,这仍然是一项持续的工作,任何小问题都会在最终发布之前被解决。


Qt商业组件Qtitan:

  • QtitanRibbon: 遵循Microsoft Ribbon UI Paradigm for Qt技术的Ribbon UI组件,致力于为Windows、Linux和Mac OS X提供功能完整的Ribbon组件。
  • QtitanChart : 是一个C ++库,代表一组控件,这些控件使您可以快速地为应用程序提供漂亮而丰富的图表。并且支持所有主要的桌面操作系统。
  • QtitanDataGrid : 适用于Qt的商业化DataGrid 组件,使得表格数据可以直接面向终端用户完全集成了QtDesigner,极易适应其他相似开发环境,保证100%兼容Qt GUI。

感谢您的阅读,希望这篇文章能带给你一定的帮助!如果这篇文章没能满足你的需求、点击下方"了解更多"获取更多文章教程


相关推荐

KaOS 2025.05版本发布:全面拥抱Qt6,彻底告别Qt5

KaOSLinux2025.05版本重磅发布:全面拥抱Qt6,开启KDE生态新篇章继2025.03版本发布两个月后,专注于KDE桌面环境、采用XFS文件系统的滚动发行版Li...

基于FIMC接口的CMOS摄像头驱动分析与设计

摘要:目前的嵌入式系统中,USB摄像头使用比较普遍,但其应用会受到传输速度的限制。本文采用一款高速CMOS摄像头,其驱动利用S3C6410内置的FIMC接口技术,采用DMA和ping-pong缓冲...

没错是微软 推出基于Linux的交换机系统

2015-09-2205:59:59作者:郑伟你没看错,为了提升自身Azure云数据中心内网络设备的兼容性及开放性,微软也开始推出基于Linux的网络交换机系统了。这个被称为AzureCloud...

Linus Torvalds 宣布首个 Linux 内核 6.16 候选版本

Linux内核负责人兼创始人LinusTorvalds宣布关闭合并窗口,该窗口用于将主要新功能添加到内核中,并开始发布Linux6.16候选版本,从候选版本1(Linux6.16-r...

Linux内核漏洞将影响Haswell架构服务器

在infoq网站上,GilTene最近报告一个十分重要,但并不为人知Linux内核补丁,特别对采用Haswell架构的Linux系统用户和管理员应该特别关注。报告提醒RedHat发行版的用户(包括...

关于Linux性能调优中网络I/O的一些笔记

写在前面和小伙伴分享一些Linux网络优化的笔记,内容很浅,可以用作入门博文内容结合《Linux性能优化》读书笔记整理涉及内容包括常用的优化工具(mii-tool,ethtool,ifconfig,i...

国产操作系统- Veket Linux(国产操作系统之光银河麒麟阅读理解)

VeketLinux是一个随身的可装在U盘的Linux操作系统。主要面向桌面用户。它的设计重点是提供简单易用且稳定的操作系统,同时保持更新和开发。它具有强大的功能集和广泛的用户基础,可满足...

AlmaLinux 9.6发布:升级工具、初步支持IBM Power虚拟化技术

IT之家5月21日消息,科技媒体linuxiac昨日(5月20日)发布博文,报道称代号为SageMargay的AlmaLinux9.6发行版已上线,距上一版本9.5发...

跟老韩学Linux运维架构师系列,vim与view的基本使用

下面是vim和view的10个实例:用vim打开一个新文件:vimnewfile.txt这个命令将会在vim编辑器中打开一个新文件。在vim中移动光标:使用方向键或h、j、k、l键来移动光标。在v...

malloc底层原理剖析——ptmalloc内存池

malloc底层为什么是内存池malloc大家都用过,其是库函数。我们都知道库函数在不同的操作系统中其实执行的是系统调用,那么malloc在Linux上执行的是哪个系统调用呢?brk()和mmap()...

Zen 6架构首秀Linux,AMD加速下一代处理器布局

IT之家5月15日消息,科技媒体Phoronix昨日(5月14日)发布博文,报道称AMD已经开始为下一代“Zen6”处理器做准备,已为该构架向Linux内核提交了首个补丁,...

为何越来越多企业转向安卓/Linux工业平板电脑?答案在这里

在工业领域,设备的稳定性至关重要,尤其是工业平板电脑,常年运行在高温、粉尘、潮湿等复杂环境下,一旦系统崩溃或者卡顿,可能会影响整个生产流程。那么,为什么越来越多的企业选择安卓/Linux工业平板电脑,...

从3ms到0.8ms:ARM+Linux如何重塑工业控制实时性标杆

在智能制造领域,产线控制系统对实时性的要求越来越高。根据行业调研数据,超过65%的工业现场出现过因系统响应延迟导致的故障停机,平均每次停机造成的直接损失高达2-8万元。传统x86架构搭配Windows...

看Linux如何"挖坑种树"

写在前面,有人看我的Linux文章说技术难度不深,笔者不是不想写深,笔者是觉得Linux难就难在入门,入门之后你就知道如何上网查询你所要要解决的Linux需求。如果你已入门,此文已对你无用,请略过此...

AlmaLinux 9.6 发布,新增功能亮点纷呈!

距离上一版本AlmaLinux9.5发布六个月后,基于5.14内核的AlmaLinux正式宣布其企业级Linux发行版的9.x系列第六个更新——AlmaLinux9.6(Sag...