QT_01 安装、创建项目

QT - 安装、创建项目

1. 概述

1.1 什么是QT

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

它为应用程序开发者提供建立艺术级图形界面所需的所有功能。

它是完全面向对象的,很容易扩展,并且允许真正的组件编程。

1.2 发展史

1991 年 Qt 最早由奇趣科技开发

1996 年 进入商业领域,它也是目前流行的 Linux 桌面环境 KDE 的基础

2008 年 奇趣科技被诺基亚公司收购,Qt 称为诺基亚旗下的编程语言

2012 年 Qt 又被 Digia 公司收购

2014 年 4 月 跨平台的集成开发环境 Qt Creator3.1.0 发布,

同年 5 月 20 日配发了 Qt5.3 正式版,至此 Qt 实现了对 iOS、Android、WP 等各平台的全面支持。

1.3 支持平台

  • Windows – XP、Vista、Win7、Win8、Win2008、Win10
  • Uinux/X11 – Linux、Sun Solaris、HP-UX、Compaq Tru64 UNIX、IBM AIX、SGI IRIX、FreeBSD、BSD/OS、和其他很多 X11 平台
  • Macintosh – Mac OS X
  • Embedded – 有帧缓冲支持的嵌入式 Linux 平台,Windows CE

1.4 版本

商业版:

  • 为商业软件提供开发,他们提供传统商业软件发行版,并且提供在商业有效期内的免费升级和技术支持服务

开源版:

  • 为了开发自有而设计的开放源码软件,它提供了和商业版本同样的功能,在GNU 通用公共许可下,它是免费的。

1.5 下载

下载地址:

http://www.qt.io/download-open-source/
或者
http://download.qt.io/archive/qt/

1.6 安装

1.6.1 Linux安装

安装:

  1. 将下载到的QTLiunx版本拷贝到ubuntu的tools文件夹下

    在这里插入图片描述

  2. 终端进入安装包所在的tools文件下

    在这里插入图片描述

  3. 运行安装的run文件

    命令:sudo ./qt-opensource-linux-x64-5.14.2.run
    输入密码
    

    在这里插入图片描述

  4. 点击下一步

    在这里插入图片描述

  5. 注册或登录

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

  6. 选择安装位置,不要修改

    在这里插入图片描述

  7. 选择安装的模块

    在这里插入图片描述

  8. 断网准备安装

    在这里插入图片描述

  9. 安装

    在这里插入图片描述

  10. 耐心等待安装结束

    在这里插入图片描述

    在这里插入图片描述

配置环境变量:

  1. 进入qt安装路径/opt/Qt5.14.2A/5.14.2/gcc_64/bin,其中有qmake文件

    在这里插入图片描述

  2. 打开bashrc文件,配置环境变量

    sudo vi ~/.bashrc
    

    在这里插入图片描述

  3. 将 export PATH=qmake文件所在路径:$PATH 添加到文件尾部

    如:export PATH=/opt/Qt5.14.2A/5.14.2/gcc_64/bin:$PATH
    
  4. 重启bashrc

    source ~/.bashrc
    
  5. 查询qmake命令是否生效

    在这里插入图片描述

1.6.2 Windows安装

注意安装路径,其他一路next。

2. 创建QT项目

2.1 创建项目

2.2.1 创建空项目

在不使用集成开发环境的情况下:

步骤: 
	1,创建一个空文件夹
	2,在该文件夹创建xxx.pro文件
	3,在该文件夹中创建main.cpp文件
	4,在该文件夹中创建widget.h文件
	5,在该文件夹中创建widget.cpp文件
	6,编写xxx.pro文件
	7,编写main.cpp
	8,编写widget.h与widget.cpp文件
2.2.2 集成开发环境新建

步骤1:选择新建

  • 方式一

在这里插入图片描述

  • 方式二

    点击左上角文件 -- 新建文件或项目
    

步骤2:选择项目类型

在这里插入图片描述

步骤3:填写项目名称与存储位置

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2.2 项目结构

在这里插入图片描述

2.3 运行

2.3.1 windows运行

在这里插入图片描述

2.3.2 Linux运行
  1. 将项目拷贝到liunx系统中

  2. 终端进入项目所在文件夹

  3. 使用qmake命令生成makefile文件

    命令:qmake
    
  4. 使用make命令生产可执行文件

    命令: make
    

    在这里插入图片描述

注意:如果出现以下问题需要安装libgl1-mesa-dev

命令:sudo apt-get install libgl1-mesa-dev

在这里插入图片描述

  1. 运行

    命令:./项目名
    

    在这里插入图片描述

2.4 工程.pro文件说明

# 添加源信息: core核心源码, gui图形化源码
QT += core gui

# 如果Qt版本大于4,没 QT添加 widgets组件库
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
#生成的.exe文件名
TARGET = demo01
#模板类型,app表示应用程序模板
TEMPLATE = app

# 使用 c++11 标准
# g++ -std=c++11
CONFIG += c++11

# Qt 过时警告
DEFINES += QT_DEPRECATED_WARNINGS

# cpp的源文件 【重要】
SOURCES += \main.cpp \widget.cpp

# 头文件 【重要】
HEADERS += \widget.h

# 编译时输出的可执行程序的名称
TARGET = hello

# 部署安装时的选项,qnx是嵌入式的操作系统的名称
qnx: target.path = /tmp/$${TARGET}/bin

# 如果不是qnx,是unix非Android时,安装的目标位置是 /opt/../bin
else: unix:!android: target.path = /opt/$${TARGET}/bin

# 如果target.path路径非空时,则设置安装路径
!isEmpty(target.path): INSTALLS += target

2.5 widget.h文件介绍

在这里插入图片描述

2.6 widget.cpp文件介绍

在这里插入图片描述

2.7 QT助手

QT的帮助文档

在这里插入图片描述

在这里插入图片描述

2.8 QT对象模型(对象树)

QObject
    Qwidget
        QMainWindow
        QPushButton
        ...

Qt的对象模型,又称之为对象树, 即子组件与父组件的关系(非父子类关系)。

  • 在 Qt 中创建对象的时候会提供一个 Parent 对象指针, 即为 父组件对象的指针

  • QObject 是以对象树的形式组织起来的:

    • 当你创建一个 QObject 对象时,会看到 QObject 的构造函数接收一个QObject 指针作为参数,这个参数就是 parent,也就是父对象指针。
    • 指定了parent之后, QObject 对象会 自动添加 到其父parent对象的 children() 列表,
    • 当父对象析构的时候,这个列表中的所有对象也会被析构
  • QWidget 是能够在屏幕上显示的一切组件的父类:

    • QWidget 继承自 QObject,因此也继承了这种对象树关系。一个组件自动地成为父组件的一个子组件。
    • 我们也可以自己删除子对象,它们会自动从其父对象列表中删除。
  • Qt 引入对象树的概念,在一定程度上解决了内存问题。

  • 如果 QObject 在栈上创建,Qt 保持同样的行为。正常情况下,这也不会发生什么问题。 但是在局部代码块中创建时,程序运行之后则会动释放,界面上不会显示。

  • 在 Qt 中,尽量在构造的时候就指定 parent 对象,并且大胆在堆上创建。

2.9 QT界面坐标系

在这里插入图片描述

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

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

相关文章

C# A* 算法 和 Dijkstra 算法 结合使用

前一篇:路径搜索算法 A* 算法 和 Dijkstra 算法-CSDN博客文章浏览阅读330次,点赞9次,收藏5次。Dijkstra算法使用优先队列来管理待处理的节点,通过不断选择最短距离的节点进行扩展,更新相邻节点的距离值。Dijkstra算法使…

Hadoop入门学习笔记——八、数据分析综合案例

视频课程地址:https://www.bilibili.com/video/BV1WY4y197g7 课程资料链接:https://pan.baidu.com/s/15KpnWeKpvExpKmOC8xjmtQ?pwd5ay8 Hadoop入门学习笔记(汇总) 目录 八、数据分析综合案例8.1. 需求分析8.1.1. 背景介绍8.1.2…

Java业务功能并发问题处理

业务场景: 笔者负责的功能需要调用其他系统的进行审批,而接口的调用过程耗时有点长(可能长达10秒),一个订单能被多个人提交审批,当订单已提交后会更改为审批中,不能再次审批(下游系…

js逆向第11例:猿人学第4题雪碧图、样式干扰

任务4:采集这5页的全部数字,计算加和并提交结果 打开控制台查看请求地址https://match.yuanrenxue.cn/api/match/4,返回的是一段html网页代码 复制出来格式化后,查看具体内容如下: <td><img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAA…

mysql与其他数据库有何区别?

随着信息技术的不断发展&#xff0c;数据库系统在各行各业中得到了广泛的应用。其中&#xff0c;MySQL作为一种流行的关系型数据库管理系统&#xff0c;与其他数据库系统存在一些明显的区别。本文将就MySQL与其他数据库的区别进行深入探讨。 1、更低的成本 MySQL是一个开源的关…

小兔鲜儿 uniapp - 项目打包

目录 微信小程序端​ 核心步骤​ 步骤图示​ 条件编译​ 条件编译语法​ 打包为 H5 端​ 核心步骤​ 路由基础路径​ 打包为 APP 端​ 微信小程序端​ 把当前 uni-app 项目打包成微信小程序端&#xff0c;并发布上线。 核心步骤​ 运行打包命令 pnpm build:mp-weix…

Mybatis系列课程-一对一

目标 学会使用 assocation的select 与column 属性 select:设置分步查询的唯一标识 column:将查询出的某个字段作为分步查询的下一个查询的sql条件 步骤 第一步:修改Student.java 增加 private Grade grade; // 如果之前已经增加过, 跳过这步 第二步:修改StudentMapper.java…

YOLOv8改进 | 2023Neck篇 | 利用Gold-YOLO改进YOLOv8对小目标检测

一、本文介绍 本文给大家带来的改进机制是Gold-YOLO利用其Neck改进v8的Neck,GoLd-YOLO引入了一种新的机制——信息聚集-分发(Gather-and-Distribute, GD)。这个机制通过全局融合不同层次的特征并将融合后的全局信息注入到各个层级中,从而实现更高效的信息交互和融合。这种…

【PX4-AutoPilot教程-TIPS】Ubuntu中安装指定版本的gcc-arm-none-eabi

Ubuntu中安装指定版本的gcc-arm-none-eabi 在 Ubuntu 中开发基于 ARM 架构的 STM32 芯片&#xff0c;需要安装交叉编译器 gcc-arm-none-eabi编译代码&#xff0c;那么什么是交叉编译器呢&#xff1f; Ubuntu 自带的 gcc 编译器是针对 X86 架构的&#xff01;而我们现在要编译…

Leetcode2962. 统计最大元素出现至少 K 次的子数组

Every day a Leetcode 题目来源&#xff1a;2962. 统计最大元素出现至少 K 次的子数组 解法1&#xff1a;滑动窗口 算法如下&#xff1a; 设 mx max⁡(nums)。右端点 right 从左到右遍历 nums。遍历到元素 xnums[right] 时&#xff0c;如果 xmx&#xff0c;就把计数器 co…

【springboot+vue项目(零)】开发项目经验积累(处理问题)

一、VUEElement UI &#xff08;一&#xff09;elementui下拉框默认值不是对应中文问题 v-model绑定的值必须是字符串&#xff0c;才会显示默认选中对应中文&#xff0c;如果是数字&#xff0c;则显示数字&#xff0c;修改为&#xff1a; handleOpenAddDialog() {this.dialogT…

JVS规则引擎和智能BI(自助式数据分析)1.3新增功能说明

规则引擎更新功能 新增: 1、数据源新增Excel数据源&#xff1b; Excel数据源功能允许用户将Excel文件作为数据源导入&#xff0c;并进行数据清洗、转换和处理&#xff0c;以实现数据的集成、可视化和深度分析&#xff0c;为决策提供强大支持&#xff0c;同时保持良好的交互性…

html+css 有关于less的使用和全面解释

目录 less 注释 运算 嵌套 变量 导入 导出 禁止导出 less Less是一个CSS预处理器, Less文件后缀是.less。扩充了 CSS 语言, 使 CSS 具备一定的逻辑性、计算能力 注意&#xff1a;浏览器不识别 Less 代码&#xff0c;目前阶段&#xff0c;网页要引入对应的 CSS 文件 V…

ClickHouse数据库详解和应用实践

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 概述1.适用场景2.不适用场景 一、核心特性1.完备的DBMS功能2.列式存储与数据压缩 二、安装部署1.在线安装2.离线安装 三、jdbc访问总结 概述 ClickHouse 是一个用于…

Linux 系统磁盘空间扩容

根据提示可以看到此系统的磁盘是 50G 的&#xff0c;但是实际适用有28G左右可以扩容20G 1、磁盘分区 m 查看帮助信息 n&#xff08;表示增加分区&#xff09; p&#xff08;创建主分区&#xff09; partition number 输入3&#xff08;因为上面已经有两个分区 sda1 和 sda2&…

Qt中图片旋转缩放操作

在我们开发过程中&#xff0c;难免会遇到加载图片的问题&#xff0c;在上一个开发项目里我就遇到了图片缩放的问题&#xff0c;所以&#xff0c;我决定将这一部分好好研究&#xff0c;记录下来&#xff0c;希望对大家有帮助哟~ 在讲解之前&#xff0c;我们先看一看具体的展示效…

react antd,echarts全景视图

1.公告滚动&#xff0c;40s更新一次 2.echarts图标 左右轮播 60s更新一次 3.table 表格 import { useState, useEffect } from react;import Slider from react-slick; import slick-carousel/slick/slick-theme.css; import slick-carousel/slick/slick.css;import Layout fro…

MongoDB批量写入操作

一、概述 MongoDB为客户端提供了批量执行写入操作的能力。批量写入操作影响单个集合。MongoDB允许应用程序确定批量写入操作所需的可接受确认级别。 db.collection.bulkWrite&#xff08;&#xff09;方法提供了执行批量插入、更新和删除操作的能力。 MongoDB还支持通过db.col…

使用Apache POI将数据写入Excel文件

首先导入依赖 <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.16</version> </dependency> <dependency><groupId>org.apache.poi</groupId><artifactId>po…

Spring Cloud Gateway 缓存区异常

目录 1、问题背景 2、分析源码过程 3、解决办法 最近在测试环境spring cloud gateway突然出现了异常&#xff0c;在这里记录一下&#xff0c;直接上干货 1、问题背景 测试环境spring cloud gateway遇到以下异常 DataBufferLimitException: Exceeded limit on max bytes t…