001 Qt_从零开始创建项目

news2024/10/23 15:21:19

文章目录

  • 前言
  • 什么是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.coloradmin.cn/o/2213220.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

多台服务器分布式定时调度的几种方案

背景:现在有多个后端服务器,并且在代码中定义了一个定时任务,希望这个定时任务在一个时间只在一个服务器上执行,涉及到分布式调度,调研了一下总结出几种方案: 1.mysql的内置GET_LOCK GET_LOCK方法的介绍 …

【学术会议-1】携手共创新纪元:加入2024年11月计算机科学与技术学术会议,探索前沿科技,分享智慧,共同塑造未来!

【学术会议-1】携手共创新纪元:加入2024年11月计算机科学与技术学术会议,探索前沿科技,分享智慧,共同塑造未来! 【学术会议-1】携手共创新纪元:加入2024年11月计算机科学与技术学术会议,探索前…

【C++】创建TCP客户端

目录 一、实现发送字符串功能 二、实现接收字符串功能 三、客户端接收乱码问题 四、客户端发送乱码问题 五、客户端接收到数据时进行回调 六、子线程接收数据 七、发送Json格式数据 源码 一、实现发送字符串功能 头文件 #pragma once #include <iostream> #inc…

快速体验 Spring AI_ 绘图样例_Spring AI alibaba

Spring AI : 一套面向java开发者的大模型统一接口 过去&#xff0c;用Java开发AI应用时面临的主要困境是缺乏统一标准的封装库&#xff0c;导致开发者需针对不同AI服务提供商&#xff08;如OpenAI、阿里云等&#xff09;各自独立对接接口文档&#xff0c;增加了学习成本与迁移…

Labview创建FPGA项目异常解决

安装了FPGA模块后&#xff0c;无法在没有真实FPGA模块时&#xff0c;创建FPGA项目。 此时需要安装多个驱动后可以解决该问题。

【帕鲁杯应急响应WP】

文章目录 一、序言 二、背景信息 三、网络拓扑 四、资产清单 五、应急响应题目 一、序言 也是终于把帕鲁杯应急响应完整做一遍了&#xff0c;主办单位真用心了&#xff0c;这么大环境&#xff0c;总结下来还是很有收获&#xff0c;但是毕竟是做题有时候不知道出题人意图不…

mitmproxy安装以及使用

mitmproxy 是一个强大的中间人代理工具&#xff0c;可以用来拦截、查看、修改HTTP/HTTPS流量。它对于测试应用程序、分析网络请求、安全审计等场景非常有用。以下是 mitmproxy 的安装和基本使用流程。 在 Linux 和 macOS 上安装 确保已安装 Python&#xff1a;mitmproxy 需要 P…

技术干货|企业如何通过创建可持续能源的数字孪生,实现即时洞察

主要看点 行业&#xff1a;能源 挑战&#xff1a;聚变动力装置在设计评估阶段需要复杂的数字仿真模型。能源企业通常希望利用昂贵的设计模型&#xff0c;通过输入从电厂现场实时传感器数据来创建数字孪生模型&#xff0c;从而帮助工程师了解电厂的结构完整性&#xff0c;并进一…

李德仁院士携实验室及大势文旅团队参加“湖北旅游、武当突破”名家谈,分享数智文旅发展新经验

10月12日上午&#xff0c;2024世界武当太极大会在湖北省十堰市武当山盛大开幕。 2023年国家科学技术最高奖获得者、中国科学院、中国工程院院士、武汉大学李德仁教授携测绘遥感信息工程国家重点实验室&#xff08;后简称“实验室”&#xff09;团队以及大势智慧文旅团队&#…

线性层(全连接层)pytorch

**前置知识&#xff1a; 1、线性层和非线性激活函数&#xff1a; 组合使用&#xff1a;通常&#xff0c;线性层后面会接一个非线性激活函数。这样&#xff0c;网络先做一次简单的转换&#xff08;线性&#xff09;&#xff0c;然后用激活函数&#xff08;非线性&#xff09;添…

迈巴赫S480升级原厂魔毯悬挂功能有哪些作用

迈巴赫 S480 升级魔毯空气悬挂系统的功能介绍如下&#xff1a; 1. 平稳驾驶体验&#xff1a; • 路况适应&#xff1a;通过摄像头和雷达扫描车前方路面状况&#xff0c;提前获取路况信息&#xff0c;然后根据这些信息自动调节空气悬挂的软硬程度。无论是在平坦的高速公路&…

最新Spring Boot3框架入门教程,基础知识讲解(参考官方文档),同时基于MybatisPlus+MYSQL搭建后台管理系统基础流程(附源码)

本文所涉及的代码以及相关文件均上传至仓库:GitHub - yang66-hash/XDPropertyManagementSystemDemo: This is a demo template based on SpringBoot3 in the background of property management system. Spring Boot 是由 Pivotal 团队开发的一款开源框架&#xff0c;它可以帮助…

如何防止箱包发霉 工厂箱包防霉方案

工厂储存的皮具、箱包保存和防护是一个很重要的问题。尤其是在潮湿多雨的季节&#xff0c;很容易受到霉菌侵袭。那么&#xff0c;如何在不损害品质的前提下&#xff0c;实现其长期保存而不发霉呢?经ihaoer防霉人士介绍箱包发霉处理方法和防霉方法如下&#xff1a; 箱包发霉处理…

JavaScript 字符串魔法:实用技巧——WEB开发系列45

这篇文章&#xff0c;探讨一下 JavaScript 中的字符串操作。字符串是编程中的基本数据类型之一&#xff0c;它们无处不在&#xff0c;几乎在所有的代码中都需要处理。了解字符串的基础知识、常用的内置方法&#xff0c;通过实例来学习高效地操作字符串。 一、什么是字符串&…

史上最好用的html类word编辑器

前言 近期在做一个项目&#xff0c;需要用到大量的word模板生成对应资料还要打印&#xff0c;之前想的是用一款富文本编辑器即可使用&#xff0c;无赖客户比较刁钻要求系统中看到的所有页面尽量和word上效果一样&#xff0c;并且打印出来每一页内容和系统显示的要一致&#xf…

如何根据店铺商品选择合适的礼品代发平台?

随着电商行业的蓬勃发展&#xff0c;礼品代发服务已经成为很多店铺提升客户体验、增加订单量的重要策略。尤其是对于那些想要通过赠送小礼品、促销品或节日礼物来吸引顾客的商家来说&#xff0c;选择一个合适的礼品代发平台至关重要。如何根据店铺的商品特点选择一个最适合自己…

人员跌倒检测系统的设计与实现(Yolov Python38 深度学习)+文档

&#x1f497;博主介绍&#x1f497;&#xff1a;✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计✌ 温馨提示&#xff1a;文末有 CSDN 平台官方提供的老师 Wechat / QQ 名片 :) Java精品实战案例《700套》 2025最新毕业设计选题推荐…

数据结构与算法——Java实现 35.求数据流中的第K大元素

目录 703. 数据流中的第 K 大元素 思路 题目解析&#xff1a; 数据流&#xff1a; 数据流和数组的区别&#xff1a; 代码实现 小顶堆类 测试类 力扣 我想成为一个强大、坦荡又热血的人&#xff0c;我爱霓虹闪烁&#xff0c;也爱高山流水&#xff0c;更爱我自己 —— 24.10.13 7…

视频的编解码格式

文章目录 视频的编解码格式概念术语视频处理流程视频封装格式视频编码格式视频编解码器&#xff0c;视频容器和视频文件格式之间的区别补充视频码率 参考资料 视频的编解码格式 概念术语 两大组织主导视频压缩的组织及其联合(joint)组织 ITU-T(VCEG) ITU-T的中文名称是国际电信…

【wpf】05 几种容器动态创建控件的对比

今天利用一点时间&#xff0c;对wpf中在常用容器中动态创建控件的方法进行了学习和测试&#xff0c;本篇文章用来记录这个过程及一些心得。 1 容器说明 用于对比的wpf常用容器类包括如下七种&#xff1a; StackPanelGridScrollViewerWrapPanelCanvasUniformGridDockPanel 以…