文章目录
- 遇见QT
- 二、QT概述
- 2.1 定义与功能
- 2.2 跨平台特性
- 2.3 优点汇总
- 三、软件安装
- 四、QT工具介绍(重要)
- 4.1 Assistant
- 4.2 Designer
- 4.3 uic.exe
- 4.4 moc.exe
- 4.5 rcc.exe
- 4.6 qmake
- 4.7 QTcreater
- 五、QT工程项目解析(作业)
- 5.1 配置文件(`.pro`)
- 5.2 头文件(`.h`)
- 5.3 源文件(`.cpp`)
- 5.4 主程序(`main.cpp`)
- 六、第一个QT界面开发
- 6.1 创建自定义类
- 6.2 界面操作代码示例
- 七、常用类与组件
- 7.1 信息调试类(`QDebug`)
- 刷题
遇见QT
二、QT概述
2.1 定义与功能
QT是基于C++编写的一套综合性类库,主要用于图形化界面开发。它不仅包含丰富的界面相关类库,还涉及进程线程库、网络编程库、数据库操作库以及文件操作库等,为开发者提供了一站式的开发解决方案。
2.2 跨平台特性
QT最大的优势之一就是跨平台性,它能在Windows、Linux、MAC等多种操作系统上运行,并且具有较为完备的图形开发库,比Windows的MFC库更强大,这使得很多原本使用MFC进行桌面开发的开发者纷纷转向QT。
2.3 优点汇总
- 接口封装性好:易于上手,对于学习计算机图形框架具有重要的参考意义。
- 内存回收机制:QT内部有一套简易好用的内存回收机制,有助于提高开发者的C++水平。
- 社区环境优良:拥有活跃的社区,市场份额也在稳步上升。
- 轻量级开发环境:适用于嵌入式开发。
三、软件安装
QT的下载地址为:https://download.qt.io/archive/online_installers/4.2/ 。针对不同操作系统,有相应的安装文件:
- Windows系统:qt-unified-windows-x86-4.2.0-beta-online.exe
- Linux系统:qt-unified-windows-x86-4.2.0-beta-online.run
- MAC系统:qt-unified-windows-x86-4.2.0-beta-online.dmg
四、QT工具介绍(重要)
4.1 Assistant
Assistant是QT类库的帮助手册工具,在开发过程中,当我们对某个类或函数的使用存在疑问时,可通过它快速查找相关信息。
4.2 Designer
Designer用于设计图形化界面,生成的界面文件后缀为.ui
。该文件内容是一种标记性语言,方便可视化设计界面布局。
4.3 uic.exe
uic.exe可将.ui
文件转换为标准的C++代码ui_***.h
。在cmd终端中,使用命令C:\Qt\5.15.2\mingw81_64\bin\uic.exe designer.ui -o ui_designer.h
即可完成转换。
4.4 moc.exe
moc.exe是元对象编辑器工具,能将QT中非标准的信号和槽转换为标准的C++代码,确保信号与槽机制的正常运行。
4.5 rcc.exe
rcc.exe作为资源管理器,可将QT资源文件(如图片、音频、视频文件)转换为标准的C++代码,便于在项目中管理和使用资源。
4.6 qmake
qmake是工程管理工具,QT工程文件后缀为.pro
。qmake根据.pro
文件生成Makefile文件,进而编译C++代码。
4.7 QTcreater
QTcreater是QT集成开发环境工具(IDE),它集成了上述所有工具,为开发者提供了一个便捷的统一开发环境。
五、QT工程项目解析(作业)
5.1 配置文件(.pro
)
#引入的类库 core核心库 gui图形化界面
QT += core gui
# 超过版本4的qt会自动加widgets
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
# c++11语言
CONFIG += c++11# The following define makes your compiler emit warnings if you use
# any Qt feature that has been marked deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS
# 简单警告不报错# You can also make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0#管理源文件
SOURCES += \main.cpp \widget.cpp
#管理头文件
HEADERS += \widget.h
#管理ui文件
FORMS += \widget.ui# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
5.2 头文件(.h
)
#ifndef WIDGET_H
#define WIDGET_H#include <QWidget> //引入父类//引入命名空间
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }//将ui文件生成的c++类引入
QT_END_NAMESPACE
//自定界面类
class Widget : public QWidget//继承父类
{Q_OBJECT//信号与槽public:Widget(QWidget *parent = nullptr);//有参构造 有默认值~Widget();//析构private:Ui::Widget *ui;//声明ui指针指向ui界面
};
#endif // WIDGET_H
5.3 源文件(.cpp
)
#include "widget.h"
#include "ui_widget.h"
//实现默认有参构造函数
Widget::Widget(QWidget *parent): QWidget(parent)//初始化父类, ui(new Ui::Widget)//初始化ui界面类
{ui->setupUi(this);//调用父类的setupui
}Widget::~Widget()
{delete ui;//释放堆区空间
}
源文件实现了头文件中声明的构造函数和析构函数。构造函数中初始化ui界面,创建自定义组件并设置相关属性;析构函数释放ui指针指向的堆区空间。
5.4 主程序(main.cpp
)
#include "widget.h"#include <QApplication>//引入应用程序头文件int main(int argc, char *argv[])
{QApplication a(argc, argv);//使用程序类的有参构造,构造出一个对象Widget w;//自定义界面w.show();//界面展示return a.exec();//轮训监控界面事件
}
六、第一个QT界面开发
6.1 创建自定义类
创建自定义类时需指定父类,如选择QMainWindow
作为父类,它会提供菜单栏、状态栏和中央窗口。
6.2 界面操作代码示例
// 信息调试类的使用
qDebug("hello world %d", 520);
qDebug() << "hello world"<< " "<< 520;
// 打印当前界面的默认尺寸
qDebug() << this->size();
qDebug() << this->height();
qDebug() << this->width();
// 重新设置界面尺寸
this->resize(800, 600);
this->resize(QSize(500,300));
this->setMaximumSize(1000, 800);
this->setMinimumSize(200,100);
this->setFixedSize(800,600);
// 操作窗口名称
qDebug() << this->windowTitle();
this->setWindowTitle("鹏哥快聊");
this->setWindowIcon(QIcon("C:/Users/鹏程万里/Desktop/icon.png"));
// 去除窗口头部
this->setWindowFlag(Qt::FramelessWindowHint);
// 设置窗口样式表
this->setStyleSheet("background-color:pink;");
// 设置窗口透明度
this->setWindowOpacity(0.3);
// 移动窗体位置
//this->move(200,300);
qDebug() << this->pos();
这些代码实现了信息调试、界面尺寸和名称操作、窗口样式和透明度设置等功能。
七、常用类与组件
7.1 信息调试类(QDebug
)
// 类似于printf
qDebug("", 输出内容);
// 类似于cout
qDebug() << 输出内容;
刷题