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

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() << "析构函数";
}

相关文章:

  • SQL面试题练习 —— 查询前2大和前2小用户并有序拼接
  • Vue 与 React 区别
  • 选GPU运行
  • 大模型+多模态合规分析平台,筑牢金融服务安全屏障
  • React+TS 从零开始教程(4):useEffect
  • Qt中使用MySQL数据库详解,好用的模块类封装
  • 比较Java爬虫框架:哪个是最佳选择?
  • PostgreSQL 性能优化与调优(六)
  • Java核心知识(一):JVM
  • PDF一键转PPT文件!这2个AI工具值得推荐,办公必备!
  • Vue 全局状态管理新宠:Pinia实战指南
  • 网络编程:使用UDP实现数据帧的接收
  • AI安全研究滞后?清华专家团来支招
  • VMamba: Visual State Space Model论文笔记
  • [PyTorch]:加速Pytorch 模型训练的几种方法(几行代码),最快提升八倍(附实验记录)
  • [分享]iOS开发-关于在xcode中引用文件夹右边出现问号的解决办法
  • conda常用的命令
  • js ES6 求数组的交集,并集,还有差集
  • magento2项目上线注意事项
  • Python socket服务器端、客户端传送信息
  • Python 反序列化安全问题(二)
  • vagrant 添加本地 box 安装 laravel homestead
  • 基于Vue2全家桶的移动端AppDEMO实现
  • 技术:超级实用的电脑小技巧
  • 前端之Sass/Scss实战笔记
  • 浅谈Kotlin实战篇之自定义View图片圆角简单应用(一)
  • 设计模式走一遍---观察者模式
  • 使用 5W1H 写出高可读的 Git Commit Message
  • 一、python与pycharm的安装
  • 分布式关系型数据库服务 DRDS 支持显示的 Prepare 及逻辑库锁功能等多项能力 ...
  • ​二进制运算符:(与运算)、|(或运算)、~(取反运算)、^(异或运算)、位移运算符​
  • ​什么是bug?bug的源头在哪里?
  • ###51单片机学习(1)-----单片机烧录软件的使用,以及如何建立一个工程项目
  • #07【面试问题整理】嵌入式软件工程师
  • #宝哥教你#查看jquery绑定的事件函数
  • $GOPATH/go.mod exists but should not goland
  • (+3)1.3敏捷宣言与敏捷过程的特点
  • (13)[Xamarin.Android] 不同分辨率下的图片使用概论
  • (3)医疗图像处理:MRI磁共振成像-快速采集--(杨正汉)
  • (Matalb分类预测)GA-BP遗传算法优化BP神经网络的多维分类预测
  • (多级缓存)多级缓存
  • (六)激光线扫描-三维重建
  • .bat批处理(九):替换带有等号=的字符串的子串
  • .net core 3.0 linux,.NET Core 3.0 的新增功能
  • .NET 中小心嵌套等待的 Task,它可能会耗尽你线程池的现有资源,出现类似死锁的情况
  • .NET4.0并行计算技术基础(1)
  • .NET编程C#线程之旅:十种开启线程的方式以及各自使用场景和优缺点
  • .net连接MySQL的方法
  • .net中应用SQL缓存(实例使用)
  • .php文件都打不开,打不开php文件怎么办
  • .skip() 和 .only() 的使用
  • @column注解_MyBatis注解开发 -MyBatis(15)
  • [ IO.File ] FileSystemWatcher
  • [ 蓝桥杯Web真题 ]-布局切换
  • [Android] Upload package to device fails #2720