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

news2024/11/28 16:26:56

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.图形化界面

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

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

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

相关文章

PyTorch 2.2 中文官方教程(二)

在 YouTube 上介绍 PyTorch PyTorch 介绍 - YouTube 系列 原文:pytorch.org/tutorials/beginner/introyt.html 译者:飞龙 协议:CC BY-NC-SA 4.0 介绍 || 张量 || 自动微分 || 构建模型 || TensorBoard 支持 || 训练模型 || 模型理解 作者&a…

05 - python操作JSON

JSON认识 JSON,一种轻量级的文本数据交换格式,比XML更小更快,更易解析,爬虫经常要获取接口数据,接口数据就是JSON格式的。 格式示例 # 格式1:JSON 对象 {"name": "李嘉图", "a…

pytorch索引和切片

目录 1. 按索引方式取数据2. 以python切片方式取数据3. 指定index取数据4. ...代表除其前后指定维度外的所有维度5. masked_select() 使用掩码选择元素6. take 矩阵打平后选取 1. 按索引方式取数据 a[0,0,2,4] 其中0,0,2,4是索引从0开始 2. …

3.0 Hadoop 概念

本章着重介绍 Hadoop 中的概念和组成部分,属于理论章节。如果你比较着急可以跳过。但作者不建议跳过,因为它与后面的章节息息相关。 Hadoop 整体设计 Hadoop 框架是用于计算机集群大数据处理的框架,所以它必须是一个可以部署在多台计算机上…

灵活应对:策略模式在软件设计中的应用

策略模式是一种行为型设计模式,它允许定义一系列算法,并将每个算法封装起来,使它们可以互换使用。策略模式让算法的变化独立于使用算法的客户端,使得在不修改原有代码的情况下切换或扩展新的算法成为可能。 使用策略模式的场景包…

无人机遥感技术在地质灾害监测应用分析,多旋翼无人机应急救援技术探讨

地质灾害是指在地球的发展演变过程中, 由各种自然地质作用和人类活动所形成的灾害性地质事件。给人民的生命和财产安全带来严重威胁,因此有必要开展地质灾害预测预报、灾害应急和风险区划 遥感技术的快速发展为我们提供了一种获取实时灾害信息的可靠手段…

使用WPS制作三线表

点击边框和底纹点击1、2、3、4并且应用于表格点击确定 再次选中表格点击右键表格属性选择边框和底纹 选中表格第一行右键点击表格属性选择边框和底纹 如果表格中存在虚线

离线数仓-数据治理

目录 一、前言 1.1 数据治理概念 1.2 数据治理目标 1.3 数据治理要解决的问题 1.3.1 合规性 元数据合规性 数据质量合规性 数据安全合规性 1.3.2 成本 存储资源成本 计算资源成本 二、数据仓库发展阶段 2.1 初始期 2.2 扩张期 2.3 缓慢发展期 2.4 变革期 三、…

基于hadoop+spark的大规模日志的一种处理方案

概述: CDN服务平台上有为客户提供访问日志下载的功能,主要是为了满足在给CDN客户提供服务的过程中,要对所有的记录访问日志,按照客户定制的格式化需求以小时为粒度(或者其他任意时间粒度)进行排序、压缩、打包,供客户进行下载,以便进行后续的核对和分析的诉求。而且CDN…

判断和循环 - switch语句和练习

switch语句格式 switch(表达式) {case 值1:语句体1;break;case 值2:语句体2;break;...default:语句体n1;break; }执行流程: 首先计算表达式的值。依次和case后面的值进行比较,如果有对应的值,就会执行相应的语句,在执行的过程中…

vue项目线上页面刷新报404 解决方法

一.修改配置文件 nginx.conf ,并重新加载或重启 我的nginx版本是1.9.9 location / {try_files $uri $uri/ /index.html; }原因: 打包后的dist下只有一个 index.html 文件及一些静态资源,这个是因为Vue是单页应用(SPA),只有一个…

《Python 网络爬虫简易速速上手小册》第6章:Python 爬虫的优化策略(2024 最新版)

文章目录 6.1 提高爬虫的效率6.1.1 重点基础知识讲解6.1.2 重点案例:使用 asyncio 和 aiohttp 实现异步爬虫6.1.3 拓展案例 1:利用 Scrapy 的并发特性6.1.4 拓展案例 2:使用缓存来避免重复请求 6.2 处理大规模数据爬取6.2.1 重点基础知识讲解…

新加坡大带宽服务器优势特点

随着互联网技术的不断进步,大带宽服务器在满足高速数据传输需求方面发挥着越来越重要的作用。新加坡,作为全球互联网基础设施的重要枢纽,其大带宽服务器在全球范围内备受关注。本文将深入探讨新加坡大带宽服务器的优势特点,以及如…

蓝桥杯每日一题----区间dp

前言 暂时没啥好说的,直接进入正题吧 引入 涂色PAINT 读题发现要求的是使一段区间满足要求的最小操作次数,考虑用动态规划去做。 第一步:考虑缩小规模,这里的规模其实就是区间长度,那么dp数组应该可以表示某个区间&…

白话 Transformer 原理-以 BERT 模型为例

白话 Transformer 原理-以 BERT 模型为例 第一部分:引入 1-向量 在数字化时代,数学运算最小单位通常是自然数字,但在 AI 时代,这个最小单元变成了向量,这是数字化时代计算和智能化时代最重要的差别之一。 举个例子:银行在放款前,需要评估一个人的信用度;对于用户而…

解析Python中HTTP代理的常见问题

在Python编程中,HTTP代理是一个经常被提及的概念,尤其在处理网络请求和爬虫时。但与此同时,使用HTTP代理也经常会遇到一些令人头疼的问题。接下来,就让我们一起解析一下Python中使用HTTP代理时常见的那些问题。 1. 代理服务器无响…

06、全文检索 -- Solr -- Solr 全文检索之在图形界面管理 Core 的 Schema(演示对 普通字段、动态字段、拷贝字段 的添加和删除)

目录 Solr 全文检索之管理 Schema使用Web控制台管理Core的Schema3 种 字段解释:Field:普通字段Dynamic Field:动态字段Copy Field:拷贝字段 演示:添加 普通字段( Field )演示:添加 动…

CSS写渐变边框线条

box-sizing: border-box; border-top: 1px solid; border-image: linear-gradient(to right, red, blue) 1;

建筑行业数字化:从设计到运维的全面革新

随着科技的快速发展,数字化技术在各行各业中的应用越来越广泛。建筑行业作为传统产业,也在积极拥抱数字化技术,以提高效率、降低成本并实现可持续发展。本文将主要探讨建筑行业数字化的几个关键领域,包括建筑设计数字化、施工管理…

CDH6.3.2 多 Spark 版本共存

一 部署Spark客户端 1.1 部署spark3客户端 tar -zxvf spark-3.3.1-bin-3.0.0-cdh6.3.2.tgz -C /opt/cloudera/parcels/CDH/lib cd /opt/cloudera/parcels/CDH/lib mv spark-3.3.1-bin-3.0.0-cdh6.3.2/ spark3将 CDH 集群的 spark-env.sh 复制到 /opt/cloudera/parcels/CDH/li…