该栏目会系统的介绍Qt的知识体系,共分为基础部分、综合实例、结合OpenCV等模块,有兴趣的小伙伴可以关注下,如有疑问可以多多评论,每周定期更新
Qt 简介
1、概述
- :一个跨平台的C++图形用户界面应用程序框架
2、优势
优势
- 跨平台
- 完全面向对象
- 易扩展
- 允许组件编程
3、基本模块
基本模块
Qt 环境
1、安装 Qt
-
安装
步骤1
步骤2:填写用户信息
步骤3
步骤4
步骤5:选择安装目录、勾选安装Qt Creator
步骤6:勾选开发必要组件
步骤7
步骤8:安装
步骤9
-
配置环境变量
2、Qt Creator 简介
概述
:是Qt的集成开发环境,集成了Qt Designer、Qt Assistant、Help等工具常用快捷键
作用 | 快捷键 |
---|---|
注释 | ctrl + / |
编译 | ctrl + b |
运行 | ctrl + r |
格式化 | ctrl + i |
移动整行 | ctrl + shift + 上下键 |
同名.h和.cpp切换 | F4 |
查找 | ctrl + f |
帮助文档 | F1 |
界面介绍
欢迎界面
:包括工程、示例和教程相关界面
编辑界面
:用于编写代码
设计界面
:用于设计UI界面
Debug界面
:调试程序,用于跟踪观察程序的运行情况
项目参数配置界面
:项目开发环境相关配置
帮助界面
:搜索相关类的介绍
Qt 简单实例
创建项目
:创建模板后,剩下的项目配置按默认的设置选择模板
选择项目名称和位置
构建系统
:用来从源代码生成用户可以使用的目标(targets)的自动化工具
配置主界面
配置语言
选择编译套件
配置预览
界面设计
UI界面
:打开mainwindow.ui
对象监视器
各控件属性
Class | text | objectName |
---|---|---|
QLabel | 半径 | radiusLabel |
QLineEdit | radiusLineEdit | |
QLabel | 面积 | areaLabel |
QLabel | 面积值 | areaValue |
QPushButton | 计算 | countBtn |
配置文件
:AreaProject.pro
# 包含Qt主要模块
QT += core gui
# 大于版本4以上,包含widgets模块
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
# 启用C+11
CONFIG += c++11
# 函数过时警告
DEFINES += QT_DEPRECATED_WARNINGS
# 生成exe程序的名称
TARGET = area_demo
# 应用程序模板(Application)
TEMPLATE = app
# 配置文件位置
SOURCES += \ # 源文件位置
main.cpp \
mainwindow.cpp
HEADERS += \ # 头文件位置
mainwindow.h
FORMS += \ # UI文件位置
mainwindow.ui
# 默认环境规则
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
主文件
:main.cpp
#include "mainwindow.h"
#include <QApplication>
// main方法,程序入口,argc命令行变量数量,argv命令行变量数组
int main(int argc, char *argv[])
{
// 应用程序,只能有一个
QApplication a(argc, argv);
// 窗口对象
MainWindow w;
// 显示窗口
w.show();
// 阻塞函数,程序进入事件循环
return a.exec();
}
主窗口头文件
:mainwindow.h
#ifndef MAINWINDOW_H // 防止头文件重复包含
#define MAINWINDOW_H
#include <QMainWindow>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT // 宏定义,允许类中使用信号和槽的机制
public:
MainWindow(QWidget *parent = nullptr); // 构造函数
~MainWindow(); // 折构函数
// 定义槽函数
private slots:
// 当countBtn按钮被点击时
void on_countBtn_clicked();
// 当radiusLineEdit输入框文本改变时
void on_radiusLineEdit_textChanged(const QString &arg1);
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
主窗口源文件
:mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
// 定义全局常量PI
const static double PI = 3.1416;
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
/**
* 当countBtn按钮被点击时
*/
void MainWindow::on_countBtn_clicked()
{
bool ok;
QString temp;
QString radiusStr = ui->radiusLineEdit->text(); // 获取输入框内容
int radius = radiusStr.toInt(&ok); // 将输入框内容转换成整数
double area = radius * radius * PI; // 计算面积
ui->areaValue->setText(temp.setNum(area)); // 将计算结果显示在areaValue组件中
}
/**
* 当radiusLineEdit输入框文本改变时
*/
void MainWindow::on_radiusLineEdit_textChanged(const QString &arg1)
{
bool ok;
QString temp;
QString radiusStr = ui->radiusLineEdit->text(); // 获取输入框内容
int radius = radiusStr.toInt(&ok); // 将输入框内容转换成整数
double area = radius * radius * PI; // 计算面积
ui->areaValue->setText(temp.setNum(area)); // 将计算结果显示在areaValue组件中
}