Qt入门教程(一):Qt使用的基本知识

目录

Qt简介

新建项目

构建目录和工作目录

构建目录

工作目录

项目结构

项目配置文件 .pro

用户文件 .user

主文件 main.cpp

头文件 dialog.h

源文件 dialog.cpp

帮助文档

三种查询文档的方式:

文档的重点位置:​编辑

调试信息


Qt简介

Qt是一个跨平台的C++应用程序开发框架。它提供了一套丰富的工具和类库,能够帮助开发者快速开发高质量的应用程序。Qt最初由挪威公司Trolltech开发,现在由Digia公司维护和支持。

Qt具有很多优点,包括:

  1. 跨平台性:Qt可以在多个操作系统上运行,包括Windows、macOS、Linux等。这意味着开发者可以使用同一套代码开发应用程序,而不需要为不同的平台编写不同的代码。
  2. 强大的图形界面设计能力:Qt提供了丰富的图形界面设计工具和类库,开发者可以轻松地创建漂亮的用户界面。
  3. 高度灵活和可扩展:Qt的类库非常丰富,开发者可以根据自己的需求选择合适的模块进行开发。此外,Qt也支持插件机制,开发者可以通过插件的方式扩展框架的功能。
  4. 良好的性能:Qt通过优化的C++代码和底层的操作系统接口,可以提供较高的性能和响应速度。
  5. 大量的文档和社区支持:Qt拥有完善的文档和社区支持,开发者可以轻松地找到答案和解决方案,避免重复工作。

总的来说,Qt是一个强大的应用程序开发框架,适用于各种类型的应用程序开发,包括桌面应用、嵌入式系统、移动应用等。无论是个人开发者还是企业开发团队,Qt都是一个值得考虑的选择。

Qt最重要的特点就是其跨平台的特性,与Java(一次编译到处运行)的跨平台不同的是,Qt的跨平台指的是一次编程,到处编译。 


 注:本文以及之后的文章使用的软件为 Qt Creator


新建项目

操作步骤如下:

1.  在Qt Creator中点击

2.  在弹出的窗口中,按照下图所示依次操作。

3.  在弹出的窗口中设置项目名称和路径,注意不能包含中文字符!!!!

4.  直接点击’下一步‘。

5.  在弹出的窗口中,选择基类为“QDialog”,选择是否“创建界面”,然后点击“下一步”。

6.  在项目管理界面,直接点击完成。创建成功后可以看到项目中包含的文件。

7.  点击可以编译运行项目(快捷键ctrl + R),项目运行后可以看到一个可视化窗口,此时表示项目可以正常运行。

构建目录和工作目录

 项目运行后,存在两个重要的目录:构建目录 和 工作目录

构建目录

用于存放项目编译过程中产生的文件,这个目录位置:

工作目录

工作目录就是创建项目时设置的目录,用于存放项目的源代码文件等开发文件。

工作目录可以通过下面的方式定位:

在项目管理界面,随便选择一个文件,右击->在Explorer中打开

工作目录下包含以下文件:

项目结构

项目配置文件 .pro

 此文件在纯C++项目中存在,用于配置项目的参数。在Windows的文件管理器中,直接双击.pro文件可以导入项目。

.pro文件的内容及作用如下

#-------------------------------------------------
#
# Project created by QtCreator 2024-06-28T09:52:24
#
#-------------------------------------------------# 添加core核心模块、gui传统的图形界面模块
QT       += core gui# 当Qt主版本号大于4(当前为5.4.0)时,添加新的图形界面模块widgets
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets# 生成的可执行文件.exe的名称 Day1_24022_helloQt.exe
TARGET = Day1_24022_helloQt
# 项目构建模式
TEMPLATE = app# 项目中包含的源文件
SOURCES += main.cpp\dialog.cpp
# 项目中包含的头文件
HEADERS  += dialog.h

用户文件 .user

此文件在Qt Creator中不可见,但是确实存在于工作目录中(项目构建之后)。

此文件是Qt根据当前计算机的开发环境自动生产的文件,每个计算机几乎不通用此文件,因此在提交代码时,一般先删除此文件。

主文件 main.cpp

 程序的入口,包含主函数。通常不需要改动主文件代码。

#include "dialog.h"
// QApplication 类 管理GUI应用程序的控制流和主设置
#include <QApplication>/*** @brief main 主函数,程序的入口* @return*/
int main(int argc, char *argv[])
{// 创建了一个管家类的栈内存对象,管理整个应用程序QApplication a(argc, argv);// 创建了一个自定义对话框窗口类的栈内存Dialog w;// 显示w.show();return a.exec();
}

头文件 dialog.h

在Qt中一个自定义类的声明都写在.h中,这个类所用到的其他类的头文件,也写在此文件中。

#ifndef DIALOG_H
#define DIALOG_H
// Qt 自带类的头文件
#include <QDialog>/*** @brief The Dialog class 自定义对话框窗口类* 继承QDialog类(对话框窗口的基类)*/
class Dialog : public QDialog
{Q_OBJECT public:Dialog(QWidget *parent = 0); // 构造函数~Dialog();  // 析构函数
};#endif // DIALOG_H

源文件 dialog.cpp

包含与同名的头文件配套的类外定义。

#include "dialog.h"
/*** @brief Dialog::Dialog 构造函数的定义* @param parent 参数*/
Dialog::Dialog(QWidget *parent): QDialog(parent) // 透传构造
{
}// 析构函数
Dialog::~Dialog()
{}

帮助文档

学习Qt一定要学习如何查阅帮助文档,通常对于不是很常用内容的开发,都是随用随查。

三种查询文档的方式:

1.  直接启动 Assistant 程序,是一个独立的文档程序。对于有副屏的人建议使用这个方法,方便随用随查。

2.  在Qt Creator中直接点击,可以打开一个内嵌的 Assistant 程序。

3.  光标定位到要查询的内容还是那个,双击键盘F1(笔记本电脑可能需要按住fn),可以直接跳转到文档内容。

文档的重点位置:

调试信息

在C语言和C++中,无论是printf还是cout输出的内容都不区分前后台,但是Qt中输出的内容是区分前后台的,通常前台指的是图形用户界面,用户可以直接通过软件界面看到;后台指的是在Qt Creator中的(控制台)中,这里显示的信息用户是不可见的,只对开发者开放。

使用 QDebug 类的 qDebug()  输出调试信息,支持中文。整个使用方式与 cout 类似,但是有以下区别:

● 连续输出时,自动添加空格

● 每次输出语句结束时,自动添加换行

 使用步骤

1、在 dialog.h 里添加头文件 #include <QDebug> 

#ifndef DIALOG_H
#define DIALOG_H#include <QDialog>
#include <QDebug> // 头文件class Dialog : public QDialog
{Q_OBJECTpublic:Dialog(QWidget *parent = 0);~Dialog();
};#endif // DIALOG_H

 2、在 dialog.cpp 里使用 qDebug()

#include "dialog.h"Dialog::Dialog(QWidget *parent): QDialog(parent)
{qDebug() << "构造函数" << "HelloWorld";
}Dialog::~Dialog()
{qDebug() << "析构函数";
}

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

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

相关文章

java 代码块

Java中的代码块主要有三种类型&#xff1a;普通代码块、静态代码块、构造代码块。它们的用途和执行时机各不相同。 普通代码块&#xff1a;在方法内部定义&#xff0c;使用一对大括号{}包围的代码片段。它的作用域限定在大括号内&#xff0c;每当程序执行到该代码块时就会执行其…

全平台7合一自定义小程序源码系统功能强大 前后端分离 带完整的安装代码包以及搭建教程

系统概述 这款全平台 7 合一自定义小程序源码系统是专为满足各种业务需求而设计的。它整合了多种功能&#xff0c;能够在不同平台上运行&#xff0c;为用户提供了全方位的体验。无论你是企业主、开发者还是创业者&#xff0c;这款系统都能为你提供强大的支持。 代码示例 系统…

crewAI实践(包含memory的启用)--AiRusumeGenerator

crewAI实践--AiRusumeGenerator 什么是crewAIAiRusumeGenerator功能效果展示开发背景开发步骤1. 首先得学习下这款框架原理大概用法能够用来做什么&#xff1f; 2. 安装crewAI以及使用概述3. 写代码Agents.pyTasks.pymian.py关于task中引入的自定义工具这里不再赘述 什么是crew…

C# 截取图片

C#从图中截取部分图片 代码实现截图_c# net core webapi如何通过图片大小区域范围进行截图-CSDN博客

V Rising夜族崛起的管理员指令大全

使用方法&#xff1a; 如果没有启用控制台需要先启用控制台 打开游戏点击选项&#xff08;如果在游戏内点击ESC即可&#xff09;&#xff0c;在通用页面找到启用控制台&#xff0c;勾选右边的方框启用 在游戏内点击键盘ESC下方的波浪键&#xff08;~&#xff09;使用控制台 指…

Vue的服务器代理如何配置

在Vue项目中配置服务器代理&#xff0c;主要是为了解决开发过程中的跨域问题&#xff0c;以及方便地将前端请求转发到后端服务器。以下是在Vue项目中配置服务器代理的详细步骤和注意事项&#xff0c;主要基于Vue CLI进行说明&#xff1a; 一、配置步骤 1. 确认项目环境 确保…

构建LangChain应用程序的示例代码:49、如何使用 OpenAI 的 GPT-4 和 LangChain 库实现多模态问答系统

! pip install "openai>1" "langchain>0.0.331rc2" matplotlib pillow加载图像 我们将图像编码为 base64 字符串&#xff0c;如 OpenAI GPT-4V 文档中所述。 import base64 import io import osimport numpy as np from IPython.display import HT…

PDF一键转PPT文件!这2个AI工具值得推荐,办公必备!

PDF转换为PPT文件&#xff0c;是职场上非常常见的需求&#xff0c;过去想要把PDF文件转换为PPT&#xff0c;得借助各种文件转换工具&#xff0c;但在如今AI技术主导的大背景下&#xff0c;我们在选用工具时有了更多的选择&#xff0c;最明显的就是基于AI技术打造的AI格式转换工…

《昇思25天学习打卡营第21天 | 昇思MindSporePix2Pix实现图像转换》

21天 本节学习了通过Pix2Pix实现图像转换。 Pix2Pix是基于条件生成对抗网络&#xff08;cGAN&#xff09;实现的一种深度学习图像转换模型。可以实现语义/标签到真实图片、灰度图到彩色图、航空图到地图、白天到黑夜、线稿图到实物图的转换。Pix2Pix是将cGAN应用于有监督的图…

gin框架 gin.Context中的Abort方法使用注意事项 - gin框架中立刻中断当前请求的方法

gin框架上下文中的Abort序列方法&#xff08;Abort&#xff0c;AbortWithStatus&#xff0c; AbortWithStatusJSON&#xff0c;AbortWithError&#xff09;他们都不会立刻终止当前的请求&#xff0c;在中间件中调用Abort方法后中间件中的后续的代码会被继续执行&#xff0c;但是…

【Unity 人性动画的复用性】

Unity的动画系统&#xff0c;通常称为Mecanim&#xff0c;提供了强大的动画复用功能&#xff0c;特别是针对人型动画的重定向技术。这种技术允许开发者将一组动画应用到不同的角色模型上&#xff0c;而不需要为每个模型单独制作动画。这通过在模型的骨骼结构之间建立对应关系来…

大数据面试题之Flink(4)

Flink广播流 Flink实时topN 在实习中一般都怎么用Flink Savepoint知道是什么吗 为什么用Flink不用别的微批考虑过吗 解释一下啥叫背压 Flink分布式快照 Flink SQL解析过程 Flink on YARN模式 Flink如何保证数据不丢失 Flink广播流 Apache Flink 中的广播流&…

系统安全与应用

目录 1. 系统账户清理 2. 密码安全性控制 2.1 密码复杂性 2.2 密码时限 3 命令历史查看限制 4. 终端自动注销 5. su权限以及sudo提权 5.1 su权限 5.2 sudo提权 6. 限制更改GRUB引导 7. 网络端口扫描 那天不知道为什么&#xff0c;心血来潮看了一下passwd配置文件&am…

使用container_of宏进行类型转换

使用container_of宏进行类型转换 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;在C语言编程中&#xff0c;经常会遇到需要在数据结构中找到结构体成员所在的结…

【2024LLM应用开发】使用Chroma DB实现语义搜索的向量数据库系统

向量数据库的建立、使用方式、原理及应用&#xff1a; 目录 向量数据库的建立&#xff1a; 使用方式&#xff1a; 代码原理: 整体结构: 为什么使用向量数据库&#xff1a; 相关应用&#xff1a; 原理深入解析&#xff1a; 向量数据库的建立&#xff1a; 向量数据库的核心是…

高阶面试-netty部分

介绍下netty Netty 是一个基于 Java 的异步事件驱动的网络应用框架&#xff0c;提供了用于快速开发高性能、高可扩展性的协议服务器和客户端的工具 BIO、NIO、AIO 的区别是什么 BIO blocking io&#xff0c;同步阻塞IO&#xff0c;比较简单&#xff0c;为每个请求分配一个线…

VSCode中常用的快捷键

通用操作快捷键 显示命令面板&#xff1a;Ctrl Shift P or F1&#xff0c;用于快速访问VSCode的各种命令。 快速打开&#xff1a;Ctrl P&#xff0c;可以快速打开文件、跳转到某个行号或搜索项目内容。 新建窗口/实例&#xff1a;Ctrl Shift N&#xff0c;用于打开一个新的…

三维家:SaaS的IT规模化降本之道|OceanBase 《DB大咖说》(十一)

OceanBase《DB大咖说》第 11 期&#xff0c;我们邀请到了三维家的技术总监庄建超&#xff0c;来分享他对数据库技术的理解&#xff0c;以及典型 SaaS 场景在数据库如何实现规模化降本的经验与体会。 庄建超&#xff0c;身为三维家的技术总监&#xff0c;独挑大梁&#xff0c;负…

grpc学习golang版( 八、双向流示例 )

系列文章目录 第一章 grpc基本概念与安装 第二章 grpc入门示例 第三章 proto文件数据类型 第四章 多服务示例 第五章 多proto文件示例 第六章 服务器流式传输 第七章 客户端流式传输 第八章 双向流示例 文章目录 一、前言二、定义proto文件三、编写server服务端四、编写client客…

实现高性能、可扩展的实时数据采集系统:go-zero的应用与实践

随着互联网技术的高速发展&#xff0c;数据采集也越来越受到重视&#xff0c;成为企业获取商业价值的重要手段。在实际应用中&#xff0c;我们往往面临着数据量大、并发高、系统响应速度要求高、压力测试等挑战。如何实现高性能、可扩展的实时数据采集系统&#xff1f;本文将介…