Qt是一个跨平台框架,通常用作图形工具包,它不仅创建CLI应用程序中非常有用。而且它也可以在三种主要的台式机操作系统以及移动操作系统(如Symbian,Nokia Belle,Meego Harmattan,MeeGo或BB10)以及嵌入式设备,Android(Necessitas)和iOS的端口上运行。

Qt官方最新版免费下载试用,历史版本下载,在线文档和帮助文件下载-慧都网​www.evget.com

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。

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

qml 时间控件_Qt6官方最新消息:桌面样式Qt quick Controls 2支持大多控件,委托更少,运行更流畅...相关推荐

  1. Qt6官方最新消息:桌面样式Qt quick Controls 2支持大多控件,委托更少,运行更流畅

    Qt是一个跨平台框架,通常用作图形工具包,它不仅创建CLI应用程序中非常有用.而且它也可以在三种主要的台式机操作系统以及移动操作系统(如Symbian,Nokia Belle,Meego Harmat ...

  2. qml自定义switch_QML官方系列教程——Qt Quick Controls Styles

    附网址:http://qt-project.org/doc/qt-5/qtquickcontrolsstyles-index.html Qt Quick Controls Styles -- Qt Q ...

  3. 7.QML Qt Quick——基于Qt Quick Controls 2实现图片浏览器

    Qt Quick Controls 2提供了一组UI控件,例如按钮,标签,复选框,滑块等(用之查之即可).用于在Qt Quick中创建用户界面.UI控件很多,这里通过一个图片浏览器的实现来逐步讲解 图 ...

  4. 10.QML Qt Quick Controls 2之imagine style

    Qt Quick Controls 2的目标之一是将控件的逻辑与外观分离.外观的实现由QML代码和图形资源组成.使用Imagine样式(imagine style),可以自定义应用程序的外观和图形资源 ...

  5. 云联惠认证时间_云联惠最新消息2018 云联惠2018年最新消息

    5月8日,广州公安微信微信官方账号发布公告,宣布成功摧毁"云连辉"特大网络传销犯罪团伙,黄等多名犯罪嫌疑人落网.公告中透露了哪些关于云连辉的最新消息?让我们和罗一起看看. 一.云连 ...

  6. 魔兽世界怀旧服最新服务器开发时间,怀旧服开70最新消息汇总 魔兽怀旧服TBC开放时间几个阶段?...

    很多玩家关心魔兽世界怀旧服开70最新消息进展的情况,到底魔兽怀旧服TBC开放时间几个阶段.在这里就做一个关于暴雪可能开TBC的时间. 最早的时候,暴雪已经向当今的许多玩家发送了一份有关70级的tbc怀 ...

  7. 9.QML Qt Quick Controls 2中常用的界面形式——并排式界面(SwipeView)

    并排式界面的实现的核心组件就是SwipeView.SwipeView由一组页面填充.一次只能看到一页.用户可以横向滑动浏览页面. 请注意,SwipeView本身完全不可见.一般与PageIndicat ...

  8. 8.QML Qt Quick Controls 2中常用的界面形式——堆叠式界面(StackView)

    堆叠式界面的实现的核心组件就是StackView.StackView是一个基于栈的导航浏览模型,可以与一组关联的页面一起使用.当用户浏览深层页面时,深层页面被推到栈顶,当用户选择返回时,之前浏览的页面 ...

  9. QML官方系列教程——Using Qt Quick Designer

    附网址:http://qt-project.org/doc/qtcreator-3.1/creator-using-qt-quick-designer.html Using Qt Quick Desi ...

最新文章

  1. html5 FileReader初识
  2. 各领域机器学习数据集汇总
  3. 帝国cms让当前栏目显示不同样式(图文)
  4. centos复制到另外一台电脑连不上网
  5. html批量转doc linux,HTML+CSS入门 Linux下如何批量将md文件转换为html文件
  6. 东北大学c语言真题及答案,东北大学C语言总测试题(含答案).pdf
  7. a标签里面设置onclick_HTML学习笔记:各种常用标签
  8. struts 通配符的使用
  9. 实现简单的字符串队列
  10. Spring Bean的加载过程以及一些生命周期
  11. linux怎么用jconsole_linux中jconsole
  12. Android 如何测试你的Base64是否正确展示
  13. 江西计算机竞赛有哪些,江西自主招生认可的竞赛有哪些
  14. 中国茶叶分类图(转载)
  15. 历数金融危机 摘自http://www.ftchinese.com/sc/index.jsp
  16. 【第一届INT杯】 INT lpy的火柴游戏(大模拟)
  17. 小波变换中的多贝西小波(DB小波函数)概述
  18. EKLAVYA -- 利用神经网络推断二进制文件中函数的参数
  19. 要发布新版的私人磁盘了。
  20. 线性代数-4-向量组的线性相关性

热门文章

  1. SQL数据库的使用:创建表结构
  2. Ubuntu 为普通用户添加sudo权限
  3. 运维实战案例之“Too many open files”错误与解决方法
  4. 基于ansible Role实现批量部署lamp平台
  5. linux从一台服务器传输文件到另一台服务器上
  6. IntelliJ IDEA 远程deBug jar包
  7. (六)Redis集群搭建
  8. Python decorator
  9. 数据库迁移记录(数据泵方式)
  10. ios创建自定义控件必须具备的三个方法