当前位置: 首页 > news >正文

Qt学习Day0:Qt简介

0. 关于Qt

Qt是C++的实践课,之前在C++中学习的语法可以有具体的应用场景。Qt的代码量很大,不要死记硬背,学会查询文档的能力更加重要。

建议提升一下相关单词的储备量:

1. Qt是什么?

Qt是一个基于C++语言的图形用户界面(GUI)框架,但是Qt不仅仅可以进行界面开发,还包含很多传统编程的功能:多线程、访问数据库、图像处理、音视频处理、网络通信、文件IO......

下面的程序都使用 Qt 开发:WPS、YY语音、Skype、豆瓣电台、虾米音乐、淘宝助理、千牛、暴雪的战网客户端、VirtualBox、Opera、咪咕音乐、Google地图、Adobe Photoshop Album 、微信(4.0以上)等。

Qt的开发产品可以分为三类:

1. 纯软件产品

例如上面的一些知名软件产品。

2. 嵌入式:上位机

3. 嵌入式:自带屏幕的硬件

2. Qt优势(掌握)

Qt最大的优势就是跨平台特性:一次编程,到处编译。

面向对象开发

丰富的API(应用程序接口)和对应的开发文档

易用的开发环境

开源(开源刺客)

3. 新建项目

在新建项目之前,需要先把之前C++设置的编码改回UTF-8,设置完成后重启Qt Creator。

下面是新建并运行一个Qt项目的操作步骤:

1. 点击

2. 直接使用默认的项目类型。

3. 设置项目名称和路径。

4. 使用默认的编译器。

5. 把基类改为QDialog

6. 项目管理界面点击完成。

7. 点击

编译并运行,自带程序会有一个弹窗。

4. 项目结构(掌握)

工作目录:即创建项目时选择的目录,用来存放项目开发时的各种工程文件,包括源代码、贴图、设计文件等。

构建目录:存放编译过程中生成的文件和最终的可执行程序。

打开工作目录,可以看到项目中自带的各种开发对应的文件:

● .pro文件

用于配置项目参数,还可以用于项目导入。

#-------------------------------------------------
#
# Project created by QtCreator 2025-04-23T09:31:34
#
#-------------------------------------------------# 在当前的项目中加入core模块和gui模块
QT       += core gui# 如果当前项目的版本大于4,则添加widgets模块
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets# 项目编译的可执行文件名称
TARGET = Day1_24121_Helloworld
# 项目的模板为应用程序(别动)
TEMPLATE = app# 项目中包含的源文件
SOURCES += main.cpp\dialog.cpp# 项目中包含的头文件
HEADERS  += dialog.h# 项目中包含的界面文件
FORMS    += dialog.ui

在确认工作目录的路径不包含中文的前提下,双击.pro文件可以导入项目。

● .user文件

不在Qt Creator中显示,但是项目构建后,会在工作目录中自动生成,内部包含了当前项目在当前设备中运行的环境信息,不同的设备此文件不通用,在导入项目之前需要删除此文件。

上面三个文件同属一个类:Dialog

● .cpp源文件用于编写类的定义

#include "dialog.h"
#include "ui_dialog.h"/*** @brief Dialog::Dialog 构造函数* @param parent*/
Dialog::Dialog(QWidget *parent) :
QDialog(parent), // 透传构造
ui(new Ui::Dialog) // 构造初始化列表
{ui->setupUi(this);
}/*** @brief Dialog::~Dialog 析构函数*/
Dialog::~Dialog()
{delete ui; // 释放成员变量的堆内存
}

● .h头文件用于编写类的声明

#ifndef DIALOG_H
#define DIALOG_H#include <QDialog> // 引入对话框窗口的基类头文件namespace Ui {class Dialog;
}/*** @brief The Dialog class 自定义对话框窗口类*/
class Dialog : public QDialog
{
Q_OBJECTpublic:
explicit Dialog(QWidget *parent = 0); // 构造函数
~Dialog(); // 析构函数private:
Ui::Dialog *ui; // 成员变量
};#endif // DIALOG_H

● .ui文件用于编写类的界面

● main.cpp

主程序文件,内部包含主函数,即程序运行的入口。

#include "dialog.h"
#include <QApplication>int main(int argc, char *argv[])
{// 创建了一个QApplication对象(管家)QApplication a(argc, argv);// 创建一个自定义窗口类对象Dialog w;// 展示窗口w.show();return a.exec(); // 进入主事件循环
}

5. 查询文档(掌握)

Qt的使用必须依赖于文档,以下是三种查询文档的方法:

1. 在Windows中打开Assistant程序。

2. 在Qt Creator中点击“帮助”

3. 在Qt Creator中光标定位到要查询的内容,双击键盘F1

查询的类首页结构如下:

注意,当程序运行出现Permission Denied信息时,表示当前项目已经有一个实例在运行了,需要关闭正在运行的实例,重新运行。

如果找不到运行窗口,就点击停止按钮。

6. 调试信息(掌握)

前期学习尽量简化项目,因此在创建项目时,先不选择界面文件。

在Qt中使用QDebug输出调试信息,QDebug可以把信息在后台显示,用户在前台不可见,而C/C++没有前后台的概念。

dialog.h

#ifndef DIALOG_H
#define DIALOG_H#include <QDialog>
#include <QDebug> // 调试信息类class Dialog : public QDialog
{
Q_OBJECTpublic:
Dialog(QWidget *parent = 0);
~Dialog();
};#endif // DIALOG_H

dialog.cpp

#include "dialog.h"Dialog::Dialog(QWidget *parent)
: QDialog(parent)
{// Qt中函数和变量使用小驼峰命名法// 第一个单词全小写,后面的单词首字母大写qDebug() << "你好" << "世界"; // <<之间自动空格qDebug() << "构造函数"; // 分号之后自动换行
}Dialog::~Dialog()
{qDebug() << "析构函数";
}

main.cpp

#include "dialog.h"
#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Dialog w;w.show();return a.exec();
}

相关文章:

  • 【C语言】(7)—指针1
  • ActiveMQ 安全机制与企业级实践(一)
  • next中的server comonent中如何共享session
  • 2025 后端自学UNIAPP【项目实战:旅游项目】1、创建项目框架
  • 物理服务器紧急救援:CentOS系统密码重置全流程实战指南
  • 关于论文中插入公式但是公式相对于段落的位置偏上应该如何调整备份
  • UE5 GAS开发P47 游戏标签
  • STL?string!!!
  • 【Hive入门】Hive安全管理与权限控制:审计日志全解析,构建完善的操作追踪体系
  • 【大数据】服务器上部署Apache Paimon
  • UE5 使用插槽和物理约束对角色新增的饰品添加物理效果
  • Nginx安全防护与HTTPS部署实战
  • 【愚公系列】《Manus极简入门》021-音乐创作助手:“音符魔术师”
  • 【Linux网络】应用层协议HTTP
  • 互联网大厂Java求职面试:云原生与AI融合下的系统设计挑战-1
  • ShardingJdbc-水平分表
  • 标签语句分析
  • Mac电脑,idea突然文件都展示成了文本格式,导致ts,tsx文件都不能正常加载或提示异常,解决方案详细说明如下
  • 【Python】一键提取视频音频并生成MP3的完整指南 by `MoviePy`
  • git中android studio不想提交文件
  • 刘诚宇、杨皓宇进球背后,是申花本土球员带着外援踢的无奈
  • 短剧剧组在贵州拍戏突遇极端天气,演员背部、手臂被冰雹砸伤
  • 41年轮回,从洛杉矶奔向洛杉矶,李宁故地重游再出发
  • 博裕基金拟收购“全球店王”北京SKP最多45%股权
  • 多省份晒出“五一”旅游“成绩单”:北京游客接待量、旅游消费创历史新高
  • 上海模速空间“北斗七星”与“群星”生态布局,正在做些什么?