Qt环境搭建+简单程序实现

Qt是什么

Qt是一个跨平台的C++图形用户界面应用程序框架。

框架的本质就是一群大佬发明的让菜鸡写出来的代码也也比较规范

也就是限制程序员的自由,让程序员写出来的代码规范。

库和框架有相似性。

库是被程序员调用的,(程序员是主体)

框架是占主体的,由程序员填充一些框架。
在这里插入图片描述

Qt是跨平台的,支持Linux,windwos,Mac,嵌入式系统

Linux中主要是KDE桌面是Qt构建的。

Qt版本

现在主要使用的Qt5版本,大多数企业使用的也是这个。

商业许可:你想使用Qt开发一个程序,就可以向公司买商业许可证

开源许可:开发一个程序,不必花钱,直接白嫖、

就像收费的Linux版本 Redhat,为什么花钱买,为的就是买一份服务。

Qt的优点

跨平台

接口简单,容易上手,学习qt有助于学习其他框架

一定程度上简化了内存回收机制,半自动的垃圾回收机制

开发效率高,能够快速构建应用程序

可以进行嵌入式开发

社区氛围也很好,可以提供较多的资料

Qt的成功案例

WPS Office办公软件

Linux的KDE桌面

Google earth桌面应用

QT开发环境的搭建

分三部分

1.安装C++的编译器,比如gcc,编译器不等于IDE

2.Qt SDK,SDK是软件开发工具包,比如windows版本QtSDK里已经内置了C++编译器,也可以用vs2022,但是需要配置,容易出错。

3.需要有一个Qt的集成开发环境

(1).Qt官方提供的Qt Creator,最容易入门上手的方式,适合新手,但是有些bug,

(2).Visual studio 功能更强,配置的更多,更容易出错,需要给VS安装Qt插件,需要把Qt SDK vs的编译器重新编译,现在也方便一些

qt项目创建

qmake 和cmake

构建系统,通过qt写的程序,通过代码来生成代码,用到一系列元编程技术

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

使用qt creator 创建项目,会自动生成一些代码来,此处生成的代码就是一个类

在这里插入图片描述

此处就是要选择这个自动生成的父类是谁

QMainWindows,完整的应用窗口,包含菜单栏工具栏,状态栏

Qwidget表示一个控件,比如输入框,按钮,下拉框,复选按钮

Qdialog表示一个会话框

Qt中内置的类都是以前置Q开头的

mainwindow.ui非常关键

可以用图形化界面的方式快速生成界面

对main函数分析

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

return exec() 表示让程序执行起来。

这个exec和Linux中的exec没用任何关系,只是名字一样。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

XML格式

XML是程序员自己约定的

Qt中使用xml文件就是去描述程序的界面是啥样的

进一步的qmake会调用相关的工具,依据这个xml文件,生成一些c++代码,从而把完整的界面构建出来

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

qt.pro文件

类似于Linux学习的makefile

makefile其实是一个非常古老的技术了

qmake搭配.pro搭配使用就能达到makefile类似的作用

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

编译生成的中间文件

ui_widget.h是widget.ui 和 xml生成的.h文件

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

helloword实现

1.纯代码

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

qt为了让开发更爽,自己开发了一些基础类,比如Qstring,QVector

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

很多年之后,上述等内容已经打磨很好了,形成了C++标准。

很显然,这些已经引入了的Qt自己包装好的这些容器类,也不可能删了,你可以使用标准库的容器,也可以使用标准库的。

所以后续代码会经常见到QString,很少见到std::String。

所以入乡随俗吧

2.图形化界面

年之后,上述等内容已经打磨很好了,形成了C++标准。

很显然,这些已经引入了的Qt自己包装好的这些容器类,也不可能删了,你可以使用标准库的容器,也可以使用标准库的。

所以后续代码会经常见到QString,很少见到std::String。

所以入乡随俗吧

2.图形化界面

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

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

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

相关文章

【自动化测试】---Selenium+Java

1.自动化测试分类 接口自动化测试UI自动化测试(移动端自动化测试、Web端自动化测试) 2.选择Selenium作为web自动化工具原因(面试题) 开源免费支持多个浏览器支持多个系统支持多语言Selenium包提供很多供测试使用的API 3.自动化是什…

深入探索 Stable Diffusion:AI图像创新的新纪元

深入探索 Stable Diffusion:AI图像创新的新纪元 介绍 Stable Diffusion 的核心功能和应用场景Stable Diffusion 架构解析深入 Stable Diffusion 的关键组件变分自编码器(VAE)生成对抗网络(GAN)注意力机制优化算法数据集…

#Z0463. 巡逻1

Description 在一个地区中有 n 个村庄,编号为 1, 2, ..., n。有 n – 1 条道路连接着这些村 庄,每条道路刚好连接两个村庄,从任何一个村庄,都可以通过这些道路到达其 他任一个村庄。每条道路的长度均为 1 个单位。 为保证该地区的…

超实用的GPT使用三个明星技巧!

在我们对ChatGPT的基础能力有了一定的了解之后,我们就要开始在ChatGPT的基础上探索更多的可能性。 而ChatGPT本身的问题也很多,ChatGPT在使用上最大也最明显的革命,其实是对自然语言的处理能力,抛开太多专业性的术语,你…

漏电流的检测要求和理解

漏电流的检测要求和理解 简介漏电流的产生和效应标准要求漏电流的试验漏电流与电磁兼容的关系小结 简介 漏电流是指非功能性电流,是非期望的会引起安全方面危险的电流。漏电流表明了设备中电气绝缘起到防电击作用具有的性能,以使穿过电气绝缘的电流控制…

linux中dup/dup2/fcntl函数的简单使用

dup函数: 作用:复制文件描述符 原型:int dup(int oldfd); oldfd是要复制的文件描述符 函数返回值: 成功返回最小且未被占用的文件描述符 失败返回-1 newfd dup(int oldfd); 注意:在调用dup函数时&#xff0c…

零基础学编程从哪里入手,编程实例分享,配件进出库管理系统软件

零基础学编程从哪里入手,编程实例分享,配件进出库管理系统软件 一、前言 对于刚学编程的人来说,多看看现有的软件实例对自己学开发软件是很有帮助的。 下面分享的实例以配件进出库管理系统软件为例说明。 软件文件下载可以点击最下方官网…

Qwen-VL 技术报告总结

感谢如此优秀的开源工作,仓库链接 Qwen-VL 权重分为 Qwen-VL && Qwen-VL-Chat,区别文档稍后介绍 训练过程 在第一阶段中主要使用224X224分辨率训练,训练数据主要来源是公开数据集,经过清洗,数据总量大约是1.4B,中文数据…

canvas实现涂鸦画板功能

查看专栏目录 canvas实例应用100专栏,提供canvas的基础知识,高级动画,相关应用扩展等信息。canvas作为html的一部分,是图像图标地图可视化的一个重要的基础,学好了canvas,在其他的一些应用上将会起到非常重…

高考志愿填报模拟系统的功能和技术总结

一、金秋志愿高考志愿填报系统主要功能: 用户注册与登录:允许学生和家长注册账号,使用注册的账号登录系统。 个人信息管理:允许用户查看、修改个人信息,如姓名、性别、联系方式等。 高考成绩输入:学生输…

《MySQL 简易速速上手小册》第1章:MySQL 基础和安装(2024 最新版)

文章目录 1.1 MySQL 概览:版本、特性和生态系统1.1.1 基础知识1.1.2 重点案例1.1.3 拓展案例 1.2 安装和配置 MySQL1.2.1 基础知识1.2.2 安装步骤1.2.3 重点案例1.2.4 拓展案例 1.3 基础命令和操作1.3.1 基础知识1.3.2 重点案例1.3.3 拓展案例 1.1 MySQL 概览&#…

STM32的分类和选型

F系列(主要用于普通应用) STM32F0xx:低成本、低功耗,适用于成本敏感和低功耗的应用。STM32F1xx:中低端微控制器,具有丰富的外设和良好的性能。STM32F2xx:高性能微控制器,适用于要求…

【C语言】位与移位操作符详解

目录 1.⼆进制和进制转换 ①十进制:生活中最常用 ②二进制:计算机中使用的,每个数字称为一个比特 ③八进制、十六进制也如上 ④二进制转十进制 ⑤十进制转二进制 ⑥二进制转八进制 ⑦二进制转十六进制 2.原码、反码、补码 3.移位操…

32USART串口

目录 一.通信接口 二.时序 三.USART简介 ​编辑四.数据帧 五.起始位侦测和采样位置对齐 &波特率计算 六.相关函数 七.编码格式设置 (1) UTF-8编码(有的软件兼容性不好)​编辑 (2)GB2312编码 八.…

MySQL之建表操作

华子目录 表操作创建表数据类型文本类型数值类型日期/时间类型Bit数据类型常见数据类型 MySQL存储引擎创建表的三个操作创建表时指定存储引擎,字符集,校对规则,行格式 查看表显示数据库中所有表显示数据库中表的信息(表结构&#…

Java实现教学过程管理系统 JAVA+Vue+SpringBoot+MySQL

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 教师端2.2 学生端2.3 微信小程序端2.3.1 教师功能如下2.3.2 学生功能如下 三、系统展示 四、核心代码4.1 查询签到4.2 签到4.3 查询任务4.4 查询课程4.5 生成课程成绩 六、免责说明 一、摘要 1.1 项目介绍 基于JAVAVu…

2023:AI疯狂进化年

嘿,大家好!让我们一起来回顾一下这疯狂的 2023 年吧!记得那个二月初吗?ChatGPT 上线了,然后呢?短短两个月,用户数量就像火箭一样突破了 1 亿!这速度,简直比超级赛亚人还快…

设置打印机

一、打开控制面板的设备和打印机选项 二、点击其中的添加打印机选项 三、点我所需的打印机未列出 四、使用IP地址或主机名添加打印机 五、输入IP

python将Word页面纸张方向设置为横向

通过python-docx的章节属性,就可以更改纸张方向、纸张尺寸。 import docx from docx.enum.section import WD_ORIENT from docx.shared import Cmdocument docx.Document() section document.sections[0]# 设置纸张大小为A4大小 section.page_width Cm(21) sect…

稳压二极管应用电路

稳压二极管比较特殊,基本结构与普通二极管一样,也有一个PN结。由于制造工艺的不同,当这种PN结处于反向击穿状态时,PN结不会损坏(普通二极管的PN结是会损坏),在稳压二极管用来稳定电压时就是利用它的这一击穿特性。 由…