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.cpp8,编写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对象模型(对象树)

QObjectQwidgetQMainWindowQPushButton...

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

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

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

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

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

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

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

2.9 QT界面坐标系

在这里插入图片描述

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

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

相关文章

聊聊分布式会话及实现方案

鲁大猿,寻找精品资料,帮你构建Java全栈知识体系 http://www.jiagoujishu.cn 基础概念 Session Cookie 会话方案比较简单,这里我在网上找了点资料,再回顾下基础吧。 为什么要产生Session http协议本身是无状态的,客户…

数据结构——二叉树四种遍历的实现

目录 一、树的概念 1、树的定义 1)树 2)空树 3)子树 2、结点的定义 1)根结点 2)叶子结点 3)内部结点 3、结点间关系 1)孩子结点 2)父结点 3)兄弟结点 4、树…

图像分割 分水岭法 watershed

版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 本文的C#版本请访问:图像分割 分水岭法 watershed(C#)-CSDN博客 Watershed算法是一种图像处理算…

Linux mcd命令教程:如何在MS-DOS文件系统中切换工作目录(附实例教程和注意事项)

Linux mcd命令介绍 mcd是mtools工具的指令,它用于在MS-DOS文件系统中切换工作目录。如果不加任何参数,它将显示当前所在的磁盘和工作目录。 Linux mcd命令适用的Linux版本 mcd命令在所有主流的Linux发行版中都可以使用,包括但不限于Ubuntu…

Flink 的时间属性及原理解析

Flink的API大体上可以划分为三个层次:处于最底层的ProcessFunction、中间一层的DataStream API和最上层的SQL/Table API,这三层中的每一层都非常依赖于时间属性。时间在Flink中的地位如下图所示: 时间属性是流处理中最重要的一个方面&#…

python flask图书管理系统带文档

python flask图书管理系统带文档。功能:登录,图书的增删改查,读者管理,借阅记录,有文档。 技术:python3,flask,mysql,html。 包含源码数据库文件文档。 源码下载地址: https://download.csd…

芯课堂 | MCU之TIMER精准延时

引言 华芯微特公司SWM系列单片机提供的TIMER个数和功能有些微差别,为了让您更加简单的使用这一功能,下面小编将以SWM190为例,给大家展示如何使用SWM系列产品的TIMER功能。 TIMER精准延时 一、TIMER简介 TIMER是一种定时器工具,…

实例:NodeJS 操作 Kafka

本人是C#出身的程序员,c#很简单就能实现,有需要的可以加我私聊。但是就目前流行的开发语言,尤其是面向web方向应用的,我感觉就是Nodejs最简单了。下面介绍: 本文将会介绍在windows环境下启动Kafka,并通过n…

滑动窗口最大值(力扣239题)

单调递减队列: 在解决题目之前,我们先来了解一下单调递减队列,它其实就是在队列的基础上多加了一些限制,如下图: 要求队列中的元素必须按从大到小的顺序排列。 如果向单调递减队列中加入数字 1,可以直接加入…

一起玩儿物联网人工智能小车(ESP32)——25. 利用超声波传感器测量距离

摘要:本文介绍如何利用超声波传感器测量障碍物的距离 测量距离是智能小车经常要用到的功能,今天就来介绍一个最常用的测量距离的传感器——超声波传感器。 超声波传感器的测距原理是利用超声波发射器向某个方向发射超声波,与此同时&#xff…

【Emgu.CV教程】第22篇 、色彩处理之ApplyColorMap()伪色彩应用

这篇文章讲的内容比较轻松,技术含量比较低。从我个人的角度讲,ApplyColorMap()函数实现了类似PhotoShop的一些酷炫效果,既把原始彩色图转换为21种风格各异的彩色图像,比如秋天风格、热力图风格等等,但是,在…

【Java期末】学生成绩管理系统

诚接计算机专业编程任务(C语言、C、Python、Java、HTML、JavaScript、Vue等)10/15R,如有需要请私信我,或者加我的企鹅号:1404293476 本文资源下载地址:https://download.csdn.net/download/weixin_47040861/88697244 —————…

Win11/10家庭版升专业版/企业版

2024.1.4 下载地址:HEU_KMS_Activator GitHubhttps://github.com/zbezj/HEU_KMS_Activator/tags 下载最新版即可 (升级时需要断网)打开程序 --> 其他 --> 选择professional --> 在点击四叶草图标即可 升级完后再次打开软件 -->…

Kali Linux实现UEFI和传统BIOS(Legacy)引导启动

默认Kali linux安装会根据当前启动的引导模式进行安装 例:以UEFI引导启动安装程序,安装后仅能在UEFI引导模式下进入系统 安装Kali系统 这边基于VirtualBox虚拟机镜像实战操作 首先创建一个Kali虚拟机 这里需要注意,把启动 EFI (只针对某些操…

Vue v-html中内容图片过大自适应处理

之前图片如下&#xff0c;图片已经超出了页面的展示范围 对v-html增加样式处理 <div class"body padding-l scroll " v-html"docData.content"> </div><style scoped>.body >>> img {max-width: 100% ;} </style>…

CCNP课程实验-04-BGP_CFG

目录 实验条件网络拓朴 基础配置需求实现IGP部分1. 按照图示配置OSPF区域&#xff0c;RID为Loopback 0地址。其中Area 146要配置为OSPF的特殊区域。2. 配置其它路由协议&#xff0c;重分布使得路由互相注入&#xff0c;实现全网互通。3. R1配置策略路由&#xff0c;使得R2经R1去…

Vue 框架前导:详解 Ajax

Ajax Ajax 是异步的 JavaScript 和 XML。简单来说就是使用 XMLHttpRequest 对象和服务器通信。可以使用 JSON、XML、HTML 和 text 文本格式来发送和接收数据。具有异步的特性&#xff0c;可在不刷新页面的情况下实现和服务器的通信&#xff0c;交换数据或者更新页面 01. 体验 A…

18、BLIP

简介 github BLIP提出了一种基于预训练的方法&#xff0c;通过联合训练视觉和语言模型来提升多模态任务的性能。 BLIP(Bootstrapping Language-Image Pretraining)是salesforce在2022年提出的多模态框架&#xff0c;是理解和生成的统一&#xff0c;引入了跨模态的编码器和解码…

词嵌入位置编码的实现(基于pytorch)

背景介绍 在transformers架构当中&#xff0c;对于词向量的输入需要加上原本词对应的位置信息&#xff0c;作为输入到模型中训练的input&#xff0c;那具体的位置编码如何实现呢&#xff1f;本篇博客就跟大家一起分享一下对应的步骤 位置编码的公式 对于词向量的位置编码的方…

西电期末1017.有序序列插值

一.题目 二.分析与思路 简单题。主要考察简单的排序&#xff0c;最后的插入数据同样不用具体实现&#xff0c;只需在输出时多输出一下即可&#xff0c;注意顺序&#xff01;&#xff01; 三.代码实现 #include<bits/stdc.h>//万能头 int main() {int n;scanf("%d…