QT6学习第一天

QT6安装和示例运行

  • QT介绍
  • QT特点
  • QT开发框架
  • QT Quick和QML介绍
  • Qt Widgets和Qt Quick
  • QT6下载安装
  • QT Creator介绍
  • QT Creator界面介绍

QT介绍

Qt是一个跨平台的应用程序和UI开发框架,可用于桌面、嵌入式和移动平台的应用程序和用户界面的开发。 使用Qt只需一次性开发应用程序,无须重新编写源代码,便可跨不同桌面和嵌入式操作系统编译部署这些应用程序。Qt默认的IDE(Integrated Development Environment,集成开发环境)是Qt Creator,它是一个全新的跨平台Qt IDE。Qt Creator是由Qt构建的,可单独使用,也可与Qt库和开发工具组成一套完整的SDK(Software Development Kit,软件开发工具包)​,其中包括高级C++代码编辑器、项目和生成管理工具、集成的上下文相关的帮助系统、图形化调试器、代码管理和浏览工具等。Qt本身是一个C++开发框架,前期只有C++ Widgets一种开发技术,直到Qt 4.7引入了一种高级用户界面技术QtQuick,该技术更便于开发人员和设计人员协同创建动态触摸式用户界面和应用程序。

1995年5月挪威的奇趣公司的两位创始人发布了第一版QT,仅支持Unix和Windows两个平台。2001年奇趣发布了QT3,增加了对macOS平台的支持。2005年6月,奇趣发布了QT4。这是一个全新的版本,与之前的3.x系列不仅二进制不兼容,甚至API也不兼容。2008年诺基亚收购奇趣并更名为QT Development Framework。并在2009年5月将QT开源。2009年3月QT4.5发布,同时还发布了全新的跨平台集成开发环境QT Creator 1.0 。另外还首次提供了可与现存的商业授权和GPL授权并行的LGPL授权。2009年12月,发布了支持Symbian平台的版本。2010年9月,QT4.7发布,并引入了一种全新的高级用户界面技术QT Quick可一种声明式编程语言QML,用于为移动和嵌入设备创建动态触摸式用户界面和轻量级应用程序。2012年12月,Qt 5正式发布,这是继Qt 4之后的另一个大的升级。Qt 5引入了全新的硬件加速图形处理,并且将QML和Qt Quick提升到与C++等同的地位。传统的基于C++的Qt Widgets仍将继续获得支持,但是全新的架构所带来的性能提升则更多作用于QML和QtQuick。 2020年12月,Qt 6.0正式发布。为了适应不断发展的新技术和新需求,Qt 6在利用C++17、下一代QML、新的图形架构、Qt Quick统一2D和3D、完全支持CMake等核心重点领域进行了大量改进,目标是让Qt成为未来的生产力平台。早期的Qt 6版本在一些功能上并不完善。2021年9月,Qt 6的第一个长期支持版本Qt 6.2LTS发布,这是第一个推荐入门使用的Qt 6版本。

QT特点

  • 支持跨平台开发
    • 可以在Linux、Windows或macOS上设计、开发一套代码,然后交叉编译到各种操作系统或裸机上进行部署,目标平台包括桌面平台(Linux/X11、macOS、Windows)、移动平台(Android、iOS)、嵌入式平台(Android Automotive OS、webOS OSE、嵌入式Linux、实时操作系统INTEGRITY和QNX)​、Web平台(WebAssembly)等。
  • 配套工具齐全
    • 不仅有可供设计师和开发者无缝协作的QtDesign Studio,还有跨平台的集成开发环境Qt Creator,可以帮助用户编写代码,完成构建、编译、本地化等任务。另外,Qt还有众多质量管理工具和部署工具,能够为整个软件生命周期提供全面保障。
  • 拥有丰富的API
    • Qt包含一整套高度直观、模块化的C++库类,拥有丰富的API,可简化应用程序的开发。Qt具有跨平台的基本组件和功能全面的扩展模块,涉及图形界面、网络、数据库、音视频、3D、图表、XML、数据可视化、Web等众多领域。
  • 支持多种语言
    • 支持C++、QML和Python等。基于C++的Qt Widgets用于创建复杂的桌面应用程序;而基于声明式UI语言QML的Qt Quick用于创建流畅、动态的移动触摸界面程序,还可以使用JavaScript进行逻辑业务描述;Qt for Python可以通过Python进行Qt程序开发。
  • 强大的开源社区

QT开发框架

Qt的模块可以分为Qt基本模块(QtEssentials)和Qt扩展模块(Qt Add-Ons),整个开发框架如图
开发框架
基础模块图示
QT基础模块
扩展模块
QT扩展模块

QT Quick和QML介绍

自QT 4发布以来,QT已成功在桌面和移动系统开发了众多应用。但随着用户的使用逐步从PC转换便携计算机和移动设备,传统的桌面系统被触屏式智能手机和平板电脑所取代,经典的窗口界面时代已经成为过去。使用QT的经典C++代码实现兼容不同大小屏幕的程序变得愈加困难。这种背景下,急需一种全新的界面开发工具适应现代化界面开发工作。
对Qt Quick的定义为:​“一种高级用户界面技术,可以轻松创建供移动和嵌入式设备使用的动态触摸式界面和轻量级应用程序。​”Qt Quick主要由一个改进的Qt Creator IDE(其中包含了Qt Quick设计器)​、新增的简单易学的QML(Qt Meta-Object Language,Qt元对象语言)和新加入Qt库中名为QtDeclarative的模块等三部分组成。这些使得QML更方便不熟悉C++的开发人员和设计人员使用。
Qt Quick是Qt中基于QML语言的一种用户界面技术的统称,它是QML、JavaScript和C++等多种技术的集合。具体来说,在Qt框架中Qt Quick模块是QML类型和功能的标准库,包含了可视化类型、交互类型、动画、模型、视图、粒子特效和渲染特效等。
在QML应用程序中,我们可以通过一个简单的import语句来使用Qt Quick模块提供的所有功能。Qt QML模块提供了QML的引擎和语言基础,而Qt Quick模块提供了QML创建用户界面所需的所有基本类型。Qt Quick模块提供了一个可视画布,并提供了丰富的类型,用于创建可视化组件、接收用户输入、创建数据模型和视图、生成动画效果等。Qt Quick模块提供了两种接口:使用QML语言创建用户界面的QML接口和使用C++语言扩展QML的C++接口。使用Qt Quick模块,设计人员和开发人员可以轻松地构建流畅的动态式QML用户界面,并且在需要的时候将这些用户界面连接到任何C++后端。
QML是一种用于描述应用程序用户界面的声明式编程语言,它使用一些可视组件以及这些组件之间的交互和关联来描述用户界面。QML是一种高可读性的语言,可以使组件以动态方式进行交互,并且组件在用户界面中可以很容易地实现自定义和重复使用。QML提供了一个具有高可读性的类似JSON的声明式语法,并提供了必要的JavaScript语句和动态属性绑定的支持。QML语言和引擎框架由Qt QML模块提供。Qt QML模块为QML语言开发应用程序和库提供了一个框架,它定义并实现了语言及其引擎架构,并且提供了一个接口,允许应用开发者以自定义类型和集成JavaScript、C++代码的方式来扩展QML语言。Qt QML模块提供了QML和C++两套接口。

Qt Widgets和Qt Quick

Qt 6包含两种用户界面技术:Qt Quick和Qt Widgets。Qt Quick开发的界面流畅、动态,适合于触摸界面;而Qt Widgets用于创建复杂的桌面应用程序。与Qt Widgets使用C++进行开发不同,Qt Quick使用QML来构建用户界面,并使用JavaScript来实现逻辑。
Qt Quick用于创建动态和流畅的用户界面,并且Qt Quick Controls提供了按钮、对话框和菜单等控件,不仅可以用来开发移动应用程序,也可以用来开发桌面应用程序。
Qt Widgets包含了桌面环境中常见的用户界面小部件,这些小部件与底层平台很好地集成在一起,可以在Windows、Linux和macOS上提供原生外观。与Qt Quick不同,这些小部件适用于创建大型桌面应用程序,不太适合创建具有流畅界面的以触摸为中心的应用程序。

总体来说,Qt Quick是触摸界面应用的最佳选择。推荐使用QtQuick的情况如下。

  • 使用短周期原型化设计
  • 在移动、嵌入式设备或MCU上运行
  • 在触摸屏上工作
  • 包含大量动画和图形效果

Qt Widgets主要用于创建复杂的桌面应用程序。推荐使用QtWidgets的情况如下。

  • 大型标准工业应用
  • 仅在桌面上运行
  • 类似于本地Linux、macOS和Windows应用程序
  • 需要很好地集成到底层平台中

QT6下载安装

安装Qt和Qt Creator时,需要下载Qt Online Installer进行在线安装,读者可以到Qt官网下载,选择下载开源版(Downloads foropen source users),然后进行下载。我是穷鬼所以选择开源版。
在这里插入图片描述
点击后滑倒下面选择下载
在这里插入图片描述
我是windows,就选择对应平台
在这里插入图片描述
然后等待下载完成。
完成后,双击安装,首先出现的是欢迎界面,需要有QT账号,没有就注册一个,然后选择安装路径(不能有中文),在选择组件界面,可以选择安装一些模块,鼠标指针移到一个组件上,可以显示该组件的简单介绍。这里主要选择了MinGW版本的Qt 6.8.0和一些附加库,建议初学者使用相同的选择,为了方便后面学习移动开发内容,也可安装Android模块。接下来都默认即可。
这里的MinGW即Minimalist GNU For Windows,是将GNU开发工具移植到Win32平台下的产物,是一套Windows上的GNU工具集,用其开发的程序不需要额外的第三方DLL支持就可以直接在Windows下运行。在Windows系统中,用户还可以使用MSVC版本的Qt,需要使用Visual C++作为编译器。
最后我们的QT Creator就装好了

QT Creator介绍

QT Creator特点

  • 支持多种系统平台
    • 可以在Windows、Linux和macOS桌面操作系统上运行,并允许开发人员编译构建桌面、移动和嵌入式平台应用程序。通过构建设置可以轻松地在目标之间切换。
  • 强大的代码编辑器
    • 可以在Qt Creator代码编辑器上使用C ++、QML、JavaScript、Python和其他语言编写代码,具备代码补全、语法突出显示、代码重构等功能。
  • 简明的向导和丰富的示例
    • 有大量演示程序、代码提示和教程,可以快速入门
  • 所见即所得的UI设计工具
    • 包括QT Designer和QT Quick Designer
    • 前者用于Qt Widgets设计和构建图形用户界面,可以用带有传统C++ Qt API的表单快速设计和构建小部件和对话框;后者可以从头开始或基于现成的UI控件快速设计和构建Qt Quick应用程序和组件。
  • 好用的帮助系统
    • 集成了QT Assistant,实现上下文相关的帮助系统,可以从编辑器一键进入关键字的帮助文档。格式清晰、内容详尽的帮助文档可以让使用者快速上手。
  • 快速完成国际化
    • 通过集成QT Linguist,可以方便快捷地将Qt C++和Qt Quick应用程序翻译成本地语言。
  • 方便的项目和本版管理
    • 无论导入现有项目,还是从头开始创建一个项目,Qt Creator都能生成所有必要的文件,包括支持CMake和用qmake进行交叉编译。
  • 丰富的调试和性能分析
    • ●丰富的调试和性能分析:集成调试器和性能分析器,对于C++代码,支持设置断点、单步调试和远程调试等功能;对于QML应用程序,通过时间线和火焰图,可以由CPU和内存使用情况的可视化表示快速识别性能瓶颈。
  • 支持多种版本控制
    • Qt Creator集成了大多数流行的版本控制系统,包括Git、Subversion、Perforce和Mercurial等。

QT Creator界面介绍

打开QT Creator,如图所示
在这里插入图片描述

  1. 菜单栏

    • 文件:
      • 新建、打开、关闭项目或文件等基本功能。
    • 编辑:
      • 撤销、剪切、复制、查找和选择编码等功能,改变字号大小和vim风格也在这里。最底下的Preferences可以调整QT Creator的各个方面的设置。
    • 试图:
      • 控制侧边栏和输出窗口显示等相关菜单
    • 构建:
      • 包含构建和运行项目等相关菜单
    • 调试:
      • 包含调试程序相关的功能菜单
    • 分析:
      • 包含QML分析器、Valgrind内存和功能分析器等菜单
    • 工具:
      • 提供快速定位菜单、C++和QML/JS相关工具菜单、测试相关菜单以及Qt Linguist等外部工具菜单
    • 控件:
      • 包含设置全屏显示、分栏和新窗口打开文件等菜单。
    • 帮助:
      • 包含Qt帮助、QT Creator版本信息、报告bug和插件管理等菜单。
  2. 模式选择器(Mode Selector)
    Qt Creator包含欢迎、编辑、设计、调试、项目和帮助6种模式,各种模式完成不同的功能,也可以使用快捷键来切换模式,各自对应的快捷键依次是Ctrl+数字1~6。

    • 欢迎模式
      • 提供一些帮助教程、查看官网论坛啥的
      • 显示了最近打开工程的界面
    • 编辑模式
      • 查看和编辑程序代码,管理项目文件。
      • 还有就是你敲代码的地方
    • 设计模式
      • 编写Qt Widgets程序时,用户可以在这里设计图形界面,进行部件属性设置、信号和槽设置、布局设置等操作。编写QML代码时,用户也可以使用Qt Quick Designer,以“所见即所得”的方式设计界面。通过“帮助→关于插件”菜单项打开已安装插件对话框,然后在其中勾选QmlDesigner项即可启用。
    • 调试模式
      • 对于C++代码,这里支持设置断点、单步调试和远程调试等功能,其中包含局部变量和监视器、断点、线程等查看窗口;对于QML代码,可以使用QML Profiler工具对QML代码进行分析。用户可以在“编辑→Preferences”菜单项中设置调试器的相关选项。
    • 项目模式
      • 其包含对特定项目的构建设置、运行设置、编辑器设置、代码风格设置和依赖关系设置等。构建设置中,用户可以对项目的版本、使用的Qt版本和编译步骤进行设置;编辑器设置中可以设置文件的默认编码和缩进等。
    • 帮助模式
      • 就是各种文档手册。其包含目录、索引、查找和书签等导航模式,可以在帮助中查看和学习Qt和Qt Creator的各方面内容。可以在“编辑→Preferences”菜单项中对帮助选项进行相关设置。
  3. 构建套件选择器(Kit Selector)

    • 目标选择器
      • 用来选择构建哪个项目、选择构建哪个版本(Debug、Release)
    • 运行
      • 点击进行项目的构建和运行
    • 调试
      • 点击进入调试模式
    • 构建
      • 点击进行项目的构建
  4. 定位器(Locator)
    用来快速定位项目、文件、类、方法、帮助文档以及文件系统。可以使用过滤器来更加准确地定位要查找的结果。

  5. 输出窗口

    • 问题窗口
      • 显示程序编译时的错误和警告信息
    • 搜索结果
      • 显示执行搜索操作后的结果信息
    • 应用程序输出
      • 显示程序运行过程中输出的所有信息
    • 编译输出
      • 显示程序编译过程中输出的信息
    • 版本控制
      • 显示版本控制相关输出信息

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

一文详细深入总结服务器选型

1. 题记: 服务器选型工作是项目规划检讨的一项非常重要的工作,本文详细深入总结服务器选型。 2. 服务器基础知识概览 2.1 服务器的定义与功能 2.1 .1 定义 服务器是一种高性能计算机,其设计目的是在网络中提供服务。它可以处理来自多个客…

打造旅游卡服务新标杆:构建SOP框架与智能知识库应用

随着旅游业的蓬勃兴起,旅游卡产品正逐渐成为市场的焦点。为了进一步提升服务质量和客户体验,构建一套高效且标准化的操作流程(SOP)变得尤为重要。本文将深入探讨如何构建旅游卡的SOP框架,并介绍如何利用智能知识库技术…

基于Python爬虫大屏可视化的热门旅游景点数据分析系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…

04 - Clickhouse-21.7.3.14-2单机版安装

目录 一、准备工作 1、确定防火墙处于关闭状态 2、CentOS 取消打开文件数限制 3、安装依赖 4、CentOS取消SELINUX 二、单机安装 2.1、下载安装 2.2、安装这4个rpm包 2.3、修改配置文件 2.4、启动服务 2.5、关闭开机自启 2.6、使用Client连接server 一、准备工作 1…

uni-app移动端与PC端兼容预览PDF文件

过程遇到的问题 1、如果用的是最新的版本的pdfjs的话,就会报Promise.withResolvers 不是一个方法的错误,原因是Promise.withResolvers是ES15新特性,想了解可参考链接,这里的解决方案是将插件里的涉及到Promise.withResolvers的地…

shell编程--永久环境变量和字符串显位

环境变量 echo $HOME 在终端输出后会显示家目录有个root变量 我们会提出个疑问为什么平时我们在终端输入sl 或者which等等命令会输出一些内容呢,这是因为这些命令都有对应的环境变量。 我们查看一下环境变量 在终端输入: echo $PATH 我们看一下输出…

vue3 + vite 进行axios请求封装及接口API的统一管理

前言 在Vue 3项目中使用Vite进行开发时,对axios进行请求封装以及统一管理接口API是非常常见的做法。这不仅可以提高代码的复用性和可维护性,还能统一处理请求和响应,管理错误处理逻辑等。下面是一个详细的步骤和示例代码,来说明如…

十三、注解配置SpringMVC

文章目录 1. 创建初始化类,代替web.xml2. 创建SpringConfig配置类,代替spring的配置文件3. 创建WebConfig配置类,代替SpringMVC的配置文件4. 测试功能 1. 创建初始化类,代替web.xml 2. 创建SpringConfig配置类,代替spr…

关于win11电脑连接wifi的同时,开启热点供其它设备连接

背景: 我想要捕获手机流量,需要让手机连接上电脑的热点。那么问题来了,我是笔记本电脑,只能连接wifi上网,此时我的笔记本电脑还能开启热点供手机连接吗?可以。 上述内容,涉及到3台设备&#x…

【OpenGL】OpenGL简介

文章目录 OpenGL概述OpenGL的本质OpenGL相关库核心库窗口管理glutfreeglutglfw 函数加载glewGLAD OpenGL概述 OpenGL(Open Graphics Library) 严格来说,本身并不是一个API,它是一个由Khronos组织制定并维护的规范(Specification)。OpenGL规范严格规定了…

AI写作(十)发展趋势与展望(10/10)

一、AI 写作的崛起之势 在当今科技飞速发展的时代,AI 写作如同一颗耀眼的新星,迅速崛起并在多个领域展现出强大的力量。 随着人工智能技术的不断进步,AI 写作在内容创作领域发挥着越来越重要的作用。据统计,目前已有众多企业开始…

ROS进阶:使用URDF和Xacro构建差速轮式机器人模型

前言 本篇文章介绍的是ROS高效进阶内容,使用URDF 语言(xml格式)做一个差速轮式机器人模型,并使用URDF的增强版xacro,对机器人模型文件进行二次优化。 差速轮式机器人:两轮差速底盘由两个动力轮位于底盘左…

Java 网络编程(二)—— TCP流套接字编程

TCP 和 UDP 的区别 在传输层,TCP 协议是有连接的,可靠传输,面向字节流,全双工 而UDP 协议是无连接的,不可靠传输,面向数据报,全双工 有连接和无连接的区别是在进行网络通信的时候,…

YOLOv8改进,YOLOv8通过RFAConv卷积创新空间注意力和标准卷积,包括RFCAConv, RFCBAMConv,二次创新C2f结构,助力涨点

摘要 空间注意力已广泛应用于提升卷积神经网络(CNN)的性能,但它存在一定的局限性。作者提出了一个新的视角,认为空间注意力机制本质上解决了卷积核参数共享的问题。然而,空间注意力生成的注意力图信息对于大尺寸卷积核来说是不足够的。因此,提出了一种新型的注意力机制—…

Python调用API翻译Excel中的英语句子并回填数据

一、问题描述 最近遇到一个把Excel表中两列单元格中的文本读取,然后翻译,再重新回填到单元格中的案例。大约有700多行,1400多个句子,一个个手动复制粘贴要花费不少时间,而且极易出错。这时,我们就可以请出…

虚拟化数据恢复—ESX SERVER共享的STORAGE中分区表被清零的数据恢复案例

虚拟化数据恢复环境&故障: 某单位信息管理平台,数台VMware ESX SERVER共享一台某品牌DS4100存储。 vc报告虚拟磁盘丢失,管理员ssh到ESX中执行fdisk -l查看磁盘,发现STORAGE中的分区表不见了。重启所有设备后,ESX S…

无效的目标发行版17和无法连接Maven进程问题

起因:我clean了一个模块的Maven想要重新下,他就开始报错。两次了都是这样。如果和我一样一开始都是好好的,直接找Maven的设置,在运行程序改,jre变成了11.它自己变成了我其他的jdk

在Docker环境下为Nginx配置HTTPS

前言 配置HTTPS已经成为网站部署的必要步骤。本教程将详细介绍如何在Docker环境下为Nginx配置HTTPS,使用自签名证书来实现加密通信。虽然在生产环境中建议使用权威CA机构颁发的证书,但在开发测试或内网环境中,自签名证书是一个很好的选择。 …

英伟达基于Mistral 7B开发新一代Embedding模型——NV-Embed-v2

我们介绍的 NV-Embed-v2 是一种通用嵌入模型,它在大规模文本嵌入基准(MTEB 基准)(截至 2024 年 8 月 30 日)的 56 项文本嵌入任务中以 72.31 的高分排名第一。此外,它还在检索子类别中排名第一(…

24 年第十届数维杯国际数模竞赛赛题浅析

本次万众瞩目的数维杯国际大学生数学建模赛题已正式出炉,无论是赛题难度还是认可度,该比赛都是数模届的独一档,含金量极高,可以用于综测加分、保研、简历添彩等各方面。考虑到大家解题实属不易,为了帮助大家取得好成绩…