一、Qt简介

news2024/11/18 23:41:28

1. 什么是Qt?

Qt是一个基于C++的图形用户界面(GUI)开发框架,但图形用户界面并不是Qt的全部,因为Qt还包含了很多非图形化的开发功能:多线程、数据库、图像图形处理、音视频处理、网络通信、文件IO等。
一方面Qt可以应用于纯软件的开发,很多业界知名的软件都是使用Qt开发的,例如:

另一方面,由于Qt良好的特性,因此在嵌入式行业也应用广泛,包括消费类电子、工业控制、军工电子、电信/网络/通讯、航空航天、汽车电子、医疗设备、仪器仪表等相关行业。

2. Qt优势

  • Qt具有良好的跨平台特性——一次编程,到处编译
  • 面向对象开发
  • 丰富的应用程序接口(API)和对应的开发文档
  • 易用的开发环境
  • 开源

3. 新建项目

在新建项目之前,需要重新给Qt Creator设置编码,操作步骤如下:
  1. 启动Qt Creator后,点击工具—选项。
    image.png
  2. 按照下图所示,更改编码为 UTF-8
    image.png
  3. 设置完成后,重新启动Qt Creator后才能新建项目应用新的编码。
    新建一个Qt项目的操作步骤如下:
  4. 点击image.png
  5. 在弹出的窗口中按照下图所示进行操作。
    image.png
  6. 在弹出的窗口中,按照下图所示设置项目名称与路径(不能包含中文字符)。
    image.png
  7. 在弹出的窗口中,直接点击“下一步”。
    image.png
  8. 在弹出的窗口中,选择基类为“QDialog”并取消“创建界面”的选项,如下所示。
    image.png
  9. 在项目管理界面,直接点击“完成”。此时就可以看到新的创建的项目了。

4. 项目结构

image.png

4.1 .pro项目配置文件

此文件用于配置项目参数,在程序运行后会在项目工作目录中生成一个隐藏的.user文件。

image.png
image.png
.user文件在提交项目时删除,因为每个计算机都是自己生成的此文件,且互不通用。删除.user文件后导入项目只需要双击.pro文件即可。

#-------------------------------------------------
#
# Project created by QtCreator 2023-10-18T09:39:19
#
#-------------------------------------------------

# 添加模块
QT       += core gui

# 如果Qt的主版本号大于4就添加新的GUI模块
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

# 可执行文件名称
TARGET = Day1_23061_helloworld
# 当前项目使用应用程序的方式构建
TEMPLATE = app

# 项目中包含的源文件
SOURCES += main.cpp\
        dialog.cpp

# 项目中包含的头文件
HEADERS  += dialog.h

除了工作目录外,还有一个构建目录:
image.png
工作目录主要存放的是源代码文件,构建目录存放的是项目编译生成的文件,如果在排查了各种情况外,项目仍然无法正常编译运行则可尝试取消
image.png,此时构建目录会直接整合工作目录中。

4.2 头文件 dialog.h

Qt中一个类的成员声明都写在与类名同名的头文件中。
#ifndef DIALOG_H
#define DIALOG_H

// 引入QDialog类的头文件,Qt中自带的类往往都是Q开头
#include <QDialog>

// 编写了一个Dialog类继承了QDialog(所有对话框窗口的基类)类
class Dialog : public QDialog
{
    // 后面讲
    Q_OBJECT

public:
    Dialog(QWidget *parent = 0); // 构造函数的声明
    ~Dialog(); // 析构函数的声明
};

#endif // DIALOG_H

4.3 源文件 dialog.cpp

Qt中将头文件中声明的成员函数的定义写在同名的源文件中。
#include "dialog.h"

// 构造函数 定义
Dialog::Dialog(QWidget *parent)
    : QDialog(parent) // 透传构造
{
    qDebug() <<"hello"<<"你好"<<"世界"; 
    			//自动添加空格,";"自动添加换行
    qDebug() <<"world";
}

Dialog::~Dialog() // 析构函数
{
    qDebug() <<"析构函数";
}

4.4 源文件 main.cpp

此文件是项目的主文件,包含项目入口:主函数。
#include "dialog.h"
#include <QApplication> // 应用程序管理类

int main(int argc, char *argv[])
{
    // 创建了一个堆内存的管理类对象
    QApplication a(argc, argv);
    // 创建了一个自定义对话框窗口类栈内存对象
    Dialog w;
    // 展示窗口
    w.show();

    return a.exec(); // 进入主事件循环
}

5. 帮助文档(重点)

Qt的API太多,无法通过记忆学习,常用的API记忆外,其他的API都要通过帮助文档随用随查,查询帮助文档的方法有:

● 直接启动Assistant程序
image.png
在Qt Creator中直接点击image.png
● 把光标停留到要查询的内容上,双击键盘F1
帮助文档的主要内容:image.png

6. QDebug 调试信息

Qt调试信息的输入不再使用命令行,而是在Qt Creator的调试区域显示,使用QDebug可以输出常用的调试信息,这样的调试信息用户不可见。
#ifndef DIALOG_H
#define DIALOG_H

#include <QDialog>
// 头文件
#include <QDebug>

class Dialog : public QDialog
{
    Q_OBJECT

public:
    Dialog(QWidget *parent = 0);
    ~Dialog();
};

#endif // DIALOG_H
#include "dialog.h"

Dialog::Dialog(QWidget *parent)
    : QDialog(parent)
{
    qDebug() << "hello" << "你好" << "世界";
    qDebug() << "world";
}

Dialog::~Dialog()
{
    qDebug() << "析构函数";
}

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

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

相关文章

【智慧工地源码】基于AI视觉技术赋能智慧工地

伴随着技术的不断发展&#xff0c;信息化手段、移动技术、智能穿戴及工具在工程施工阶段的应用不断提升&#xff0c;智慧工地概念应运而生&#xff0c;庞大的建设规模催生着智慧工地的探索和研发。 建筑施工具有周期长、环境复杂、工序繁杂、人员流动性大等特点&#xff0c;所以…

10个基于.Net开发的Windows开源软件项目

分享10个适合程序员的神器&#xff0c;都是基于.Net开发的&#xff0c;可以用来学习&#xff0c;日常工作也可以使用。&#xff08;点击标题&#xff0c;查看详情&#xff09; 1、基于.NET的强大文件格式开源转换工具 一个基于.NET平台的开源文件格式转换工具&#xff0c;可以…

仿写el-upload组件,彻底搞懂文件上传

用了那么久的Upload组件&#xff0c;你知道是怎么实现的么&#xff0c;今天就来仿写一个饿了么el-upload vue组件&#xff0c;彻底搞懂前端的文件上传相关知识&#xff01; 要实现的props 参数说明action必选参数&#xff0c;上传的地址headers设置上传的请求头部multiple是否…

Linux内存管理(2):memblock

一、memblock分配器初始化 在内核初始化过程中也需要分配内存,使用的页帧分配器叫memblock(早期的内核版本使用BootMem,新版本内核已不再用)。 memblock是系统启动过程中的一个中间阶段的内存管理, 负责在系统上电到内核内存管理模型初始化之前这段时间的物理内存分配、预留…

mac 升级node到指定版本

node版本14.15.1升级到最新稳定版18.18.2 mac系统 先查看一下自己的node版本 node -v开始升级 第一步 清除node的缓存 sudo npm cache clean -f第二步 安装n模块【管理模块 n是管理 nodejs版本】 sudo npm install -g n第三步升级node sudo n stable // 把当前系统的 Node…

C++初阶(五)类和对象

文章目录 一、C两大类型二、类的6个默认成员函数三、构造函数1、概念2、特性1、构造函数自动调用特性演示2、无参有参调用两种情况演示3、函数重载演示4、默认构造函数组成及演示5、内置类型成员不初始化的补丁演示 3、析构函数1、概念2、特性1、代码演示2、析构两种情况 4、构…

Android MQTT连接阿里云使用Json解析数据

Android Studio 连接阿里云订阅主题然后使用JSON解析数据非常好用 导入MQTT的JAR包1、在项目中添加依赖然后使用Studio 去下载库2、直接下载JAR包&#xff0c;然后作为库进行导入 环境验证&#xff1a;给程序进行联网权限XML布局文件效果如下&#xff1a; MainActitive.java 主…

PTrade财务数据获取函数的问题

前文介绍了PTrade的get_fundamentals函数&#xff0c;可以用于获取股票的财务数据。但在实际应用中&#xff0c;会遇到如下的问题。 前文我们通过将回测时间设置为2023-05-05进行回测调用get_fundamentals&#xff0c;得到如下查询结果&#xff1a; secu_codepubl_dateend_da…

ThingsBoard 实现设备认领

1. 设备认领的使用场景 设备认领在一种场景下使用,当租户已经生产好设备时,租户把设备卖给了客户, 客户通过认领的方式将设备划分到自己下面,客户变成设备的拥有者。 2. 设备认领的方式 设备认领的方式存在两种: 设备生成密钥 和 服务端生成密钥 2.1. 设备生成密钥 设备…

Zookeeper+Hadoop+Spark+Flink+Kafka+Hbase+Hive 完全分布式高可用集群搭建(保姆级超详细含图文)

说明: 本篇将详细介绍用二进制安装包部署hadoop等组件&#xff0c;注意事项&#xff0c;各组件的使用&#xff0c;常用的一些命令&#xff0c;以及在部署中遇到的问题解决思路等等&#xff0c;都将详细介绍。 1.环境说明 1.1 ip规划 iphostname192.168.1.11node1192.168.1.…

来看看如何使用Proton_实现网络聚合_利用安全的网络协议实现网络通讯---工具箱工作笔记001

首先要去注册proton.com 注册的时候首先去注册一个proton的邮箱@protonmail.com这个邮箱 注册以后进入,然后选择中文 然后再去下载这个CDN加速网址 去下载了以后 选择左侧免费的就可以了

升级版多功能版在线WEB工具箱PHP源码/在线站长工具箱源码/php多功能引流工具箱源码

源码简介&#xff1a; 升级版多功能版在线WEB工具箱PHP源码&#xff0c;这是最新的在线站长工具箱源码&#xff0c;它是一款PHP多功能引流工具箱源码。作为一个多功能的Web工具PHP脚本&#xff0c;包含45种工具&#xff0c;适用于平常任务和开发人员&#xff0c;或者用来推广引…

公有云厂商---服务对照表

各厂商特点&#xff1a; Compute: Network: Storage: Database: Migration Tool: Identify: WAF: 来源&#xff1a;https://comparecloud.in/

p-limit源码解读--30行代码,高大上解决Promise的多并发问题

背景 提起控制并发&#xff0c;大家应该不陌生&#xff0c;我们可以先来看看多并发&#xff0c;再去聊聊为什么要去控制它 多并发一般是指多个异步操作同时进行&#xff0c;而运行的环境中资源是有限的&#xff0c;短时间内过多的并发&#xff0c;会对所运行的环境造成很大的…

《算法通关村第二关——指定区间反转问题解析》

《算法通关村第二关——指定区间反转问题解析》 题目描述 给你单链表的头指针head和两个整数left和right&#xff0c;其中left < right 。 请你反转从位置left到位置right的链表节点&#xff0c;返回反转后的链表。 示例1&#xff1a; 输入&#xff1a; head [1,2,3,4,5…

打工人必备技能——找资源~

让我看看还有哪个打工人不会找资源&#xff0c;不过没关系&#xff0c;相信看完我这篇内容&#xff0c;不会的也学会了&#xff01; 一、XDown 全网1000平台视频解析下载器&#xff0c;在线视频下载工具&#xff0c;几乎能下全网所有平台的视频&#xff0c;而且下完还能自由转…

HammerDB的安装和使用(超详细)

目录 ​编辑 一、HammerDB的介绍 二、HammerDB的安装 1、下载hammerdb安装包 2、权限配置以及安装 3、查看安装目录 三、安装前的配置 1、启动监听 2、启动数据库 3、创建表空间 1.修改临时表空间 2…

STM32F4之系统滴答定时器

一、系统滴答定时器概述 传统定时器&#xff1a;如手机闹钟&#xff0c;闹钟等就是一个简单地计数器。 定时器概念&#xff1a;由时钟源计数器计数值组成的计数单元。 系统嘀嗒定时器首先是存在于内核里&#xff0c;系统嘀嗒时钟假如用的是同一个内核那么里面相关的配置&…

移动端web调试工具vConsole使用详解

目录 简介&#xff1a; 使用 方法一&#xff1a;使用 npm&#xff08;推荐&#xff09; 方法二&#xff1a;使用 CDN 直接插入到 HTML 开发环境显示生成环境删除 vConsole是框架无关的&#xff0c;可以在 Vue、React 或其他任何框架中使用&#xff0c;类似于微信小程序体验…

《计算机是怎样跑起来的》计算机三大原则、TCP/IP、xml

文章目录 计算机的三个根本基础TCP/IP 网络的简单理解向路由器更进一步DNS服务器IP 地址和 MAC 地址的对应关系TCP 的作用以及 TCP/IP网络的层级模型 基本概念的阐述XML定义优势结构 计算机的三个根本基础 计算机是执行输入、运算、输出的机器。 计算机的硬件由大量集成电路 IC…