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. 纯软件产品

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

  1. 嵌入式:上位机

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

2. Qt优势(掌握)

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

面向对象开发

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

易用的开发环境

开源(开源刺客)

3. 新建项目

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

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

  1. 点击
  1. 直接使用默认的项目类型。
  1. 设置项目名称和路径。
  1. 使用默认的编译器。
  1. 把基类改为QDialog
  1. 项目管理界面点击完成。
  1. 点击

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

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源文件用于编写类的定义

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头文件用于编写类的声明

cpp 复制代码
#ifndef DIALOG_H
#define DIALOG_H

#include <QDialog> // 引入对话框窗口的基类头文件

namespace Ui {
    class Dialog;
}

/**
 * @brief The Dialog class 自定义对话框窗口类
 */
class Dialog : public QDialog
{
Q_OBJECT

public:
explicit Dialog(QWidget *parent = 0); // 构造函数
~Dialog(); // 析构函数

private:
Ui::Dialog *ui; // 成员变量
};

#endif // DIALOG_H

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

● main.cpp

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

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程序。
  1. 在Qt Creator中点击"帮助"
  1. 在Qt Creator中光标定位到要查询的内容,双击键盘F1

查询的类首页结构如下:

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

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

6. 调试信息(掌握)

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

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

dialog.h

cpp 复制代码
#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

dialog.cpp

cpp 复制代码
#include "dialog.h"

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

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

main.cpp

cpp 复制代码
#include "dialog.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Dialog w;
    w.show();

    return a.exec();
}
相关推荐
朱颜辞镜花辞树‎19 分钟前
Go Web 后台管理系统项目详解
开发语言·前端·golang
moxiaoran575325 分钟前
Kubernetes(k8s)学习笔记(八)--KubeSphere定制化安装
笔记·学习·kubernetes
学地理的小胖砸30 分钟前
【Python 模块】
开发语言·python
百分百题库APP38 分钟前
中级注册安全工程师的《安全生产专业实务》科目如何选择专业?
学习·考试·题库·考证
xa138508691 小时前
ARCGIS PRO DSK 选择坐标系控件(CoordinateSystemsControl )的调用
java·开发语言·arcgis
沐雨潇竹1 小时前
Qt 中信号与槽(signal-slot)机制支持 多种连接方式(ConnectionType)
开发语言·qt
mozun20201 小时前
QT:qt5调用打开exe程序并获取调用按钮控件实例2025.5.7
开发语言·数据库·qt·测试用例·控件·外部调用
末央&2 小时前
【数据结构】手撕二叉搜索树
开发语言·数据结构·c++
一个天蝎座 白勺 程序猿2 小时前
Python爬虫(20)Python爬虫数据存储技巧:二进制格式(Pickle/Parquet)性能优化实战
开发语言·爬虫·python
珹洺2 小时前
C++从入门到实战(十二)详细讲解C++如何实现内存管理
c语言·开发语言·数据结构·c++