001 Qt_从零开始创建项目

文章目录

  • 前言
  • 什么是Qt
  • Qt的优点
  • Qt的应用场景
  • 创建项目
  • 小结

前言

本文是Qt专栏的第一篇文章,该文将会向你介绍如何创建一个Qt项目

什么是Qt

Qt 是⼀个 跨平台的 C++ 图形⽤⼾界⾯应⽤程序框架 。它为应⽤程序开发者提供了建⽴艺术级图形界⾯所需的所有功能。它是完全⾯向对象的,很容易扩展。Qt 为开发者提供了⼀种基于组件的开发模式,开发者可以通过简单的拖拽和组合来实现复杂的应⽤程序,同时也可以使⽤ C++ 语⾔进⾏⾼级开发。编写 C++ 代码,框架当然也很重要的。但是C++的生态,是割裂的,离散C++不同的开源社区/大厂,各自有各自的框架,各自为政,相比之下, 像 Qt 这种, 能够被大家共同认可的框架,在整个C++生态中是不多见的

Qt的优点

• 跨平台,⼏乎⽀持所有的平台
• 接⼝简单,容易上⼿,学习 QT 框架对学习其他框架有参考意义
• ⼀定程度上简化了内存回收机制
• 开发效率⾼,能够快速的构建应⽤程序
• 有很好的社区氛围,市场份额在缓慢上升
• 可以进⾏嵌⼊式开发

Qt的应用场景

• 桌⾯应⽤程序
Qt 能够创建各种类型的桌⾯应⽤程序,包括⽂件管理器、媒体播放器、绘图程序等。Qt 应⽤程序⽀持多种操作系统,可以运⾏在 Windows、Linux、macOS 等桌⾯操作系统上。
• 移动应⽤程序
Qt ⽀持 Android 和 IOS 移动操作系统,为应⽤程序提供了强⼤的跨平台能⼒。可以使⽤ Qt 构建各种移动应⽤程序,例如社交应⽤、游戏、娱乐等。
• 嵌⼊式系统
Qt 在嵌⼊式领域应⽤⾮常⼴泛,它可以构建⾯向各种设备的图形应⽤程序,在机顶盒、⻋载娱乐系统、安防监控设备等领域具有⼴泛的应⽤。

创建项目

新建项目

启动后进入到这个页面,点击新建文件或项目
在这里插入图片描述

选择项目模板

• Qt Widgets Application:普通窗体模板,传统基于部件的窗体界⾯程序。如果使用QT写一个GUI程序,应使用QT Widget
• Qt Console Application:Qt 控制台应⽤程序。因为 Qt 主要⽤于图形界⾯设计,这个控制台项⽬模板基本不⽤。无 GUI 界面,一般用于学习 C/C++ 语言,只需要简单的输入输出操作时可创建此类项目
• Qt for Python:在Python下⽤ LGPL 的许可来开发闭源 Qt 软件。
• Qt Quick Application: Qt 提供的⼀种⾼级⽤⼾界⾯技术,使⽤它可以⽅便快速的为移动以及嵌⼊式设备开发流畅美观的⽤⼾界⾯。Qt Quick 模块是开发 QML 应⽤的标准库,提供了使⽤ QML 创建⽤⼾界⾯所需的⼀切,包括可视化、交互、动画、模型、视图、粒⼦效果以及着⾊效果等。
这里我们直接选择Qt Widgets Application
在这里插入图片描述

选择项目路径

注意工程名与存放项目的路径不要有中文,设置完下一步即可
在这里插入图片描述

选择构建系统

Qt 中的构建⼯具有三种可供选择,分别是:qmake、CMake、Qbs
• qmake: qmake 是⼀个构建⼯具(build tool),⽤于⾃动⽣成 makefile ⽂件。qmake ⽀持跨平台构建。qmake 编辑的是⼀个后缀名为 .pro 的⽂件。
• CMake:CMake 是⼀个跨平台的构建⼯具。CMake 本⾝不是⼀个编译器,其实就是⽣成⼀个让编译器能读懂编译流程的⽂件⼯具。让 CMake ⾃动⽣成构建系统,例如 Makefile 和 Visual Studio项⽬⽂件。CMake 是⼀个第三⽅⼯具,有⾃⼰的⽂档。
• Qbs:Qbs(Qt Build Suite:Qt构建套件)同 qmake、CMake ⼀样都是构建⼯具。Qbs 号称是新⼀代的构建⼯具,⽐ qmake 编译速度更快。Qbs 没有绑定 Qt 版本,它从项⽬⽂件的⾼级项⽬描述中⽣成⼀个正确的依赖表。⽽传统的 MakeFile ⽣成⼯具如 qmake 和 CMake ,其在⽣成 MakeFile⽂件后将实际的命令交给 Make ⼯具去执⾏。
Qt 官⽅声明,因市场原因,弃⽤ Qbs 。对于 Qt ⽤⼾来说,qmake 是当前使⽤最⼴泛的构建⼯具,CMake 其次
这里我们选择qmake即可,然后下一步
在这里插入图片描述

填写类信息设置界面

使用Qt Creator创建项目,会自动地生成一些代码出来,生成的代码就包含一个类
QMainWindows 完整的应用程序窗口(可以包含菜单栏、工具栏、状态栏)
Qwidget 最简单、最基本的窗体程序,⾥⾯可以放置多个控件实现程序功能
Qdialog 基于对话框的程序,对话框⼀般⽤于弹窗,也可以⽤于主界⾯显⽰。对话框是从QWidget继承⽽来的,并丰富了⼀些功能,如模态显⽰和返回值等
Base class选择QWidget,然后下一步
在这里插入图片描述

选择语言与翻译文件

先跳过就行,暂时不考虑国际化,直接下一步
在这里插入图片描述

选择Qt套件

默认只有第⼀个 “Desktop Qt 5.14.2 MinGW 64-bit”,如果安装配置了多个 Qt 套件,就可以都选上。
Qt 套件是指 Qt 程序从编译链接到运⾏环境的全部⼯具和 Qt 类库的集合,对于 MinGW 版本 Qt 程序⽣
成和调试,⾄少需要 MinGW 中的编译器 g++(⾃动调⽤链接器)、g++ 配套的基础库、调试器 gdb 还
有使⽤ MinGW 环境编译⽽成的 Qt 类库⾃⾝。默认情况下,在上⾯ Kit Selection ⾥选中全部套件。
在这里插入图片描述

项目管理

两个都暂时用不到,选none。如果想把代码提交到码云或者 github, 可以在此处选择 git 作为版本控制系统.
在这里插入图片描述

项目代码解释

当创建好项目后,Qt会自动生成几个文件,关于代码含义看注释就行,这里就不再展开
main.cpp
使用Qt Creator创建任意工程后,main.cpp文件中都会生成如下代码
QApplication 为应⽤程序类;QApplication a;(a为应⽤程序对象,有且仅有⼀个。)
在这里插入图片描述
widget.cpp
Widget.cpp文件是类Widget的实现代码,所有在窗体上要实现的功能添加在此文件中
在这里插入图片描述

widget.h
通过ui指针可以访问UI设计界面中的任意对象
在QT中,如果要使用信号与槽(后续介绍)的机制 就必须加⼊ Q_OBJECT 宏;
在这里插入图片描述
Widget.ui文件是窗口界面定义文件,是一个XML文件,xml和html非常类似,都是用成对的标签来表示数据,XML定义了窗口上的所有组件的属性设置,布局,及其信号与槽函数的关联等。用UI设计器可视化设计的界面都由Qt自动解析,并以XML文件的形式保存下来。在设计界面时,只需在UI设计器里进行可视化设计即可,不用考虑widget.ui文件是怎么生成的
在这里插入图片描述
进一步qmake会调用相关的工具,依据该xml文件生成一些C++代码,从而把完整的界面构造出来
如果双击widget.ui文件,Qt Creator会自动进入到设计模式,可以对图形化界面进行可视化编辑
在这里插入图片描述

如果点击左侧的编辑,可以查看XML
在这里插入图片描述

小结

今日要分享的内容就到这里了,如果本文存在疏漏或错误的地方,还请您能够指出

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【华为】基于华为交换机的VLAN配置与不同VLAN间通信实现

划分VLAN(虚拟局域网)主要作用: 一、提高网络安全性 广播域隔离访问控制增强 二、优化网络性能 减少网络拥塞提高网络可管理性 sysytem-view #进入系统视图配置参数 vlan batch 10 20 #批量创建vlanLSW3: int g0/0/1 port …

Linux 进程概念

一.进程的基本概念 课本概念: 进程是程序的一个执行实例, 指的是正在执行的程序。内核视角: 进程是担当分配系统资源的实体。 1.1 什么是进程PCB? 进程PCB(Process control block)是一个存储进程属性的集合。 1.1.1 Linux系统中的进程PCB 进程PCB在Linux操作系统中为task_…

【STM32CubeMX开发】-2.1-TIM_生成一个定时器中断

目录 1 Tim定时器的时钟源 2 Tim定时器的配置 2.1 中断配置 3 生成代码 4 测试结果 结尾 1 Tim定时器的时钟源 TIM1的时钟来源自APB1 Timer clocks,时钟树上所有总线频率均设置为了STM32F0能达到的最高频率,此时APB1 Timer clocks 48MHz。 2 Tim…

SparkSQL介绍及使用

文章目录 1. SparkSQL介绍及使用1.1 SparkSQL介绍1.2 数据结构的形式1.3 Spark SQL 特点1.4 Spark SQL 和 Hive SQL关系 1. SparkSQL介绍及使用 1.1 SparkSQL介绍 Spark SQL是Apache Spark 用于处理结构化数据(DataFrame和Datasets)的模块。 在Spark1.0…

【C++】map和set使用

前言 有了前面搜索二叉树的基础,那么这篇博客对于map和set两个容器就很好理解使用,让我们来看看map和set到底有什么特性吧 💓 个人主页:小张同学zkf ⏩ 文章专栏:C 若有问题 评论区见📝 🎉欢迎…

图文深入理解java对象从创建到回收都经历了什么

1. 前言: 每个java对象都是有生命周期的,就像一个人的生命一样,从孕育到出生到成长变老最后由归于自然。笔者认为,Java对象的整个生命周期可以分为两个大的阶段:即创建阶段和运行阶段(包含对象的回收和消亡…

LSTM时序预测 | Python实现LSTM长短期记忆神经网络时间序列预测

本文内容:Python实现LSTM长短期记忆神经网络时间序列预测,使用的数据集为AirPassengers 目录 数据集简介 1.步骤一 2.步骤二 3.步骤三 4.步骤四 数据集简介 AirPassengers 数据集的来源可以追溯到经典的统计和时间序列分析文献。原始数据集由 Box,…

一个好的维权小程序应该是什么样的?

小程序如今为大家提供了很多的便利服务,且小程序的种类、功能是很多样的,那么对于一个好的维权小程序来说,其功能和设计应该紧紧围绕着用户的需求。 设计页面应该直观简单,功能布局让人一目了然;操作简单,…

外包干了30天,技术明显退步:一段自我觉醒与转变的旅程

在人生的长河中,每个人都会遇到属于自己的转折点。我也不例外。作为一个本科生,我于2019年通过校招踏入了南京某软件公司的大门,成为了一名功能测试工程师。在那个相对安逸的环境中,我度过了将近两年的时光。然而,随着…

当下的时代?

我这两天刚接触一个人,错误之皇,每做一件小事的时候他都像救命稻草一样抓着,有一天我一看,嚯,好家伙,他抱着的是已经让我仰望的参天大树了! 这个时代需要我们从无限思维的视角和做法去努力;它不取决于我们现在有多少,而取决于我们未来的成长幅度是多少&a…

Dev-C++萌新学习福利3

朝鲜球作品原创https://blog.csdn.net/2401_86502594?spm1011.2124.3001.5343 清北互联地址https://www.17ac.cn/#/ 萌新福利 作品成本6999元!!! 清北互联团队编写课程,本人不收费。亏本买卖,良心服务,同嫂…

IP地址类型选择指南:动态IP、静态IP还是数据中心IP?

你是否曾经困惑于如何选择最适合业务需求的IP地址类型?面对动态IP、静态IP和数据中心IP这三种选择,你是否了解它们各自对你的跨境在线业务可能产生的深远影响? 在跨境电商领域,选择合适的IP类型对于业务的成功至关重要。动态IP、…

技术分享 —— JMeter接口与性能测试实战!

前言 在软件开发和运维过程中,接口性能测试是一项至关重要的工作。JMeter作为一款开源的Java应用,被广泛用于进行各种性能测试,包括接口性能测试。本文将详细介绍如何使用JMeter进行接口性能测试的过程和步骤。 JMeter是Apache组织开发的基…

JavaSE--全盘拿下数组的关键要领

嗨嗨大家~我来啦!今天我们来进入数组的学习吧。 目录 一 数组的定义 1 创建数组 2 初始化数组 二 数组的使用 1 数组的访问 2 数组的遍历 2.1 for 循环打印 2.2 for-each 打印数组 三 数组是引用类型 3.1 JVM内存分布 3.2 区分基本类型与引用类型变…

Taro 中 echarts 图表使用

1 下载 echarts4taro3 yarn add echarts4taro3 或 pnpm add echarts4taro3 或 npm i echarts4taro3 --save2 图表初始化需要先加载echarts模块 import * as echarts from "echarts4taro3/lib/assets/echarts"; // 这里用了内置的,也可以用自定义的 echa…

TCP与UDP协议(三次握手四次挥手)

TCP与UDP 简介TCP和UDP一、TCP1.1 TCP的三次握手问题来了:为啥是三次握手而不是两次呢? 1.2建立连接后的通信过程(丢包与乱序问题)1.3四次挥手问题来了:为什么要四次挥手? 二、UDP 简介TCP和UDP TCP、UDP都…

SQL第16课——更新和删除数据

介绍如何利用update和delete语句进一步操作表数据。 16.1 更新数据 使用update语句。两种使用方式: 1. 更新表中的特定行; 2. 更新表中的所有行。 !!!(使用update时不要省略where子句,因为…

链接伪类(:hover)CSS背景图片有闪动BUG的解决方法 vue3

现象: hover时候,图片还没加载出来,导致边框闪烁 在Vue 3中,如果你遇到了使用伪类(:hover)时背景图片出现闪烁的问题,可能是由于浏览器的渲染机制导致的。解决这个问题的方法可能包括: 使用background-pos…

spark:数据的关联与合并、缓存和checkpoint

文章目录 1. 数据的关联与合并1.1 join关联1.1.1 内关联1.1.2 左关联1.1.3 右关联 1.2 Union合并 2. 缓存和checkpoint 1. 数据的关联与合并 1.1 join关联 students表数据: 1.1.1 内关联 内关联只返回两个 DataFrame 中在连接键上匹配的行。 # join 关联 from…

【Linux】【Jenkins】后端项目打包教程-Linux版

本次安装版本:2.4 1、安装git环境2、安装mavne环境2.1 下载依赖2.2、解压、赋权2.2、配置环境变量2.3、验证安装 3、jenkins-插件下载3.1、进入jenkins-->系统管理3.2、进入系统管理-->插件管理3.3、下载两个插件(如果之前下载了,这里是…