当前位置: 首页 > 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();
}

http://www.xdnf.cn/news/307297.html

相关文章:

  • [人机交互]协作与通信的设计
  • 数据管理平台是什么?企业应如何做好数据化管理?
  • 巧记英语四级单词 Unit7-下【晓艳老师版】
  • [java八股文][Java并发编程面试篇]并发安全
  • Android Service 从 1.0 到 16 的演进史
  • SQL报错注入成功特征
  • 人工智能100问☞第15问:人工智能的常见分类方式有哪些?
  • Unity Editor 扩展:查找缺失的 Image Sprite
  • 从入门到登峰-嵌入式Tracker定位算法全景之旅 Part 7 |TinyML 定位:深度模型在 MCU 上的部署
  • HarmonyOS开发:粒子动画使用详解
  • idea更换jdk版本操作
  • 分布式、高并发-Day03
  • 开源BI选型及DataEase搭建
  • 香港维尔利健康科技集团与亚洲医学研究院达成战略合作,联合打造智慧医疗应用技术实验室
  • ES6/ES11知识点 续五
  • 单调栈算法精解(Java实现):从原理到高频面试题
  • [250504] Moonshot AI 发布 Kimi-Audio:开源通用音频大模型,驱动多模态 AI 新浪潮
  • Android数据库全栈开发实战:Room+SQLCipher+Hilt企业级应用构建
  • 【计算机网络】TCP/IP四层模型是什么?与OSI七层模型哪些区别?
  • 提示词的 嵌入空间优化
  • ECMAScript 6(ES6):JavaScript 现代化的革命性升级
  • 使用蚁群算法求解VRPTW问题
  • 信息系统项目管理工程师备考计算类真题讲解十三
  • 光纤失效模式及其影响
  • n8n 与智能体构建:开发自动化 AI 作业的基础平台
  • 单例模式的实现方法
  • Android SDK 国内镜像及配置方法(2025最新,包好使!)
  • MySQL同步ES的6种方案!
  • 74LS138译码器的编址技术
  • 存储系列知识