CSDN话题挑战赛第2期
参赛话题:Qt应用程序开发
目录
Qt 是一款跨平台软件,用于创建图形用户界面以及跨平台应用程序,这些应用程序运行在各种软件和硬件平台上,如Linux、Windows、macOS、Android或嵌入式系统,底层代码库几乎没有变化,同时仍然是具有本地功能和速度的本地应用程序。
1990年夏天,Haavard和Eirik 一起开发了一个用于超声图像的c++数据库应用程序。系统需要能够在Unix、Macintosh和Windows上使用GUI运行。那年夏天的一天,Haavard和Eirik出去晒太阳,当他们坐在公园的长凳上时,Haavard说:“我们需要一个面向对象的显示系统。”最终的讨论为他们不久将继续构建的面向对象的跨平台GUI框架奠定了知识基础。
1990 Haavard Nord和Eirik Chambe-Eng在挪威特隆赫姆的公园构想出来Qt。
1995 Troll Tech 于 5 月 20 日首次公开发布。用于 X11/Linux 的 Qt 0.90。商业和开源(FreeQt 许可证)
1996 "头号客户":欧洲航天局。 Qt 1.0,完全免费的 X11 支持免费软件开发和 Windows。以 Qt 作为其底层库建立的 KDE 项目
1998 KDE Free Qt Foundation:保证自由软件开发的 Qt 可用性
1999 Qt 2.0 - Qt/X11 开源与 QPL(Q 公共许可证)
2000 新的 Qt 窗口系统,Qt/Embedded,又名 QWS 和 Qtopia Core。 GPL + 商业许可下的 Qt/X11 和 Qt/Embedded。 GPL v2 与 Qt 2.2
2001 Qt 3.0 - “多数据库环境、多语言、多显示器”,支持 Mac OS X 和新的 Qt Designer GUI 构建器
2005 Qt 4.0。适用于所有平台甚至 Windows 的商业和 GPL 2.0(或更高版本)下的全面改造(又名兼容性中断)(已发布 Qt 4 舞蹈视频)
2006 Trolltech IPO(首次公开募股)。Greenphone开发智能手机。Qtopia在全球数以百万计的设备中,从夏普到摩托罗拉。
2008 诺基亚收购Trolltech,“诺基亚Qt软件”
2009 Qt Creator的发布和Qt 4.5带来了LGPL v2.1
2010 Qt 4.7推出了Qt Quick,集成了WebKit,支持塞班
2011 Digia收购Qt商业授权业务。Qt的项目。诺基亚N9 -诺基亚MeeGo“Harmattan”智能手机。诺基亚改变智能手机平台战略
2012 Digia获得了Qt的所有权利,“Digia, Qt”。Qt 5.0的大改,新的模块化代码库,QPA (Qt平台抽象)的整合,Qt Quick 2,以及对移动设备的更多支持(WinRT)。
2013 引导到Qt预构建的软件栈和Qt WebEngine
2014 “Digia, Qt”成为自己的实体“The Qt Company”,是Digia的子公司
2015-至今 Qt的第一个公开发布20周年。一个Qt站点统一完成。全球超80万+ Qt开发人员
在工业和商业环境中,客户体验有时会被抛弃,但它会带来不同。在Girbau,我们有各种各样的客户,他们对我们的每种产品都有不同的需求。此外,我们还需要有效地生产、销售和安装我们的产品。设计一个考虑到所有这些需求的新硬件和软件平台的过程是一个挑战,但它必须提供简单和可靠的解决方案,为我们的客户带来利润和创新。
目前,Qt多媒体渲染视频到一个SurfaceTexture,这需要Android框架访问视频数据。然而,在飞机上,视频必须以隧道模式播放,以提供最好的视频体验。这将阻止框架访问视频数据。
在这次演讲中,我们如何能够在隧道模式下渲染4K HDR视频Qt/QML,并提供最佳的乘客体验。
Qt开发人员的现代CMake
55%的开发人员使用CMake作为c++代码的构建工具,CMake是c++事实上的标准构建工具。CMake开发团队和社区对Qt6将使用CMake作为其主要构建系统感到兴奋。
CMake在过去20年里不断发展,每当一个主要社区采用CMake时,都会添加一些功能来支持该社区。Qt6在这方面并不是唯一的。为了支持这一转变,已经向CMake添加了一些特性。例如,ninja版本现在支持同时进行多个配置,automoc支持也得到了改进,定制命令可以添加依赖信息。除了介绍这些新添加的内容和其他内容外,本次演讲还将介绍如何利用最新的CMake编码范式和开发人员可用的新特性来编写现代CMake代码。
在开发Qt 6时,我们希望建立在现代c++标准的基础上。c++ 17是最新发布的版本,Qt 6现在依赖于c++ 17兼容的编译器。这使得我们有可能清理和改进我们的代码库,并为用户提供更现代的api。
在处理大型数据集和性能方面对底层容器类进行了改进。
下一代QML我们已经开始在更新QML语言方面做出更大的努力,使它在未来更安全和更容易使用。Qt 6.0 - 6.2在此奠定了基础,但这种持续的努力将在Qt 6系列中继续进行。
将属性绑定引入c++是使QML如此成功的概念之一。在Qt 6中,我们已经在c++中实现了这个概念。
新的图形架构Qt 6为如何处理与底层操作系统api的集成提供了一个全新的架构。由于新的渲染硬件接口(RHI), Qt 6现在默认使用每个系统上最好的图形API,显著提高了兼容性——特别是在桌面和移动操作系统上,如Windows和macOS,以及iOS。
Qt Quick传统上是一个用于构建动画和流动2D用户界面的框架。通过Qt 6,我们也简化了将3D内容集成到基于QML的应用程序中。深度集成使得在任何级别混合2D和3D内容,同时获得系统的最大性能变得微不足道。
在Qt 6中,我们将构建系统从qmake切换到CMake,这是目前基于c++的应用的标准构建系统。虽然qmake在Qt 6的生命周期内仍然被支持,但初步的用户报告显示,在切换到cmake后,qmake有了显著的改进。
框架的主干是由Qt 基础模块组成的。它们如下:
Qt 基础模块 | 特点 |
Qt Core | 所有其他模块都不需要这些非图形化的核心类 |
Qt GUI | 用于GUI设计的基本类,包括OpenGL |
Qt Multimedia | 一组用于处理多媒体的QML类型和c++类 |
Qt Multimedia Widgets | 类基于小部件来实现多媒体功能 |
Qt Network | 应用程序api依赖于TCP/IP网络 |
Qt QML | Qt QML标记语言的框架和类型 |
Qt Quick | 框架创建动态应用程序自定义QML UI |
Qt Quick Controls 2 | 轻量级、非常高效的QML类型简化了接口的表述 |
Qt Quick Dialogs | 用于创建和与系统对话框交互的类型 |
Qt Quick Layouts | 用于已开发接口中对象布局的QML类型 |
Qt Quick Test | QML应用程序的测试框架 |
Qt SQL | 类用于SQL数据库集成 |
Qt Test | 类,用于Qt应用程序和库的详细测试 |
Qt Widgets | 用于经典UI创建的UI元素集 |
您可以创建图形用户界面以部署在桌面、移动和嵌入式操作系统上。无需重写源代码。要将 Qt 用于 32 位或 64 位平台,您所需要的只是正确的编译器和渲染器。
您可以在下面找到支持的平台:
QML 是一种声明性语言,其语法类似于 CSS 和 JSON,支持命令式 JS 表达式。QML 定义了对象的属性及其关系以及对其他对象变化的响应。与命令式语言不同,它将属性的变化以及行为直接集成到对象定义中。通常,引擎会从 QML 文档中加载 Qt 标记语言的源代码。然后,开发人员可以在应用程序中进一步重用对象类型。
Qtwidget是用户界面的原子:它从窗口系统接收鼠标、键盘和其他事件,并在屏幕上绘制自己的表示。每个小部件都是矩形的,它们按z轴顺序排列。小部件由其父部件和它前面的小部件剪切.
QT widget很早以前就发明了,甚至在智能手机出现之前。这就是为什么小部件最初是为桌面应用程序设计的。QML和Qt Quick,作为一种为他们的智能手机轻松创建gui的方法。这就是Qt Quick最初为智能手机设计的原因。
然而,人们正在努力将这两个世界统一起来。例如,Qt Quick Controls包含许多为桌面应用程序设计的组件。
语言差异:
技术差异:
第一步:前往qt官网下载在线安装包.
Index of /archive/online_installers/4.4
这里可以根据你们实际环境去选择
打开
qt5版本目前需要注册个账号(免费),然后一直点下一步
到这里选择组件,我们可选择qt5.15.2版本。点击下一步直至最后安装完成,大约需要2小时左右。
我们回到桌面,打开qt- creator.
点击, 新建,Application(QT), QT Quick Application, Choose
然后继续下一步
点击下一步,完成
main.qml 就是我们要绘制的窗口界面文件
main.cpp 就是我们c++后端逻辑代码
点击三角号运行,运行第一个helloword 程序
Qt是一种流行的解决方案,用于专注于创建嵌入式设备和物联网软件的项目。它也用于桌面和移动开发。最著名的Qt项目之一是KDE Plasma,它经常被评为最佳桌面环境。Qt被LG,特斯拉,微软,三星,宝马,西门子,惠普,飞利浦等公司使用。