1、t的介绍、优点、成功案例5.8.0 Qt是一个跨平台的C++图形用户界面应用程序框架。它为应用程序开发者提供建立艺术级图形界面所需的所有功能。爸是完全面向对象的,很容易扩展,并且允许真正的组件编程。
文章图片
推荐安装
wpslinux 桌面环境虚拟机软件屏幕共享
文章图片
QT名称中不支持中文命名和中午路径 不能添加空格
子父类的关系
qwidget单纯窗口
QMainWindow页面扩展菜单栏
QDialog弹出对话框
文章图片
项目文件
文章图片
第一个qt程序(main.cpp文件内的编写)
文章图片
#include"mywidget.h"
#include //包含头文件应用程序
//程序入口argc命令行变量数量argv命令行变量数组
5.int main(int argc,char*argv[])
//应用程序对象a,Qt中有且仅有一个应用程序对象
QApplication a(argc,argv);
//创建Mywidget对象w Mywidget基类
Qwidget MyWidget w;
///窗口默认是不会弹出的,如果想弹出调用show方法w.show();
//a.exec()进入消息循环机制 pause
return a.exec();
//while(1)
//{
//if(点击叉子)
//{
//break;
//}//)
}
pro文件详解
Qr +=core gui//qt包含的模块
greater Than(QTIAJORVERSION,4):QT +=widsets//大于4版本包含widset横块
TARGET=01_Qt_First//目标。生成的.exe可执行文件的名称后期可手动更改生成的文件TRIPLATE=app//模板应用程序
SOURCES+=main.cpp\//源文件
mywidget.cpp HEADERS +=mywidget.h I//头文件
头文件的解析
#ifndef MYWIDGET_H
#define MYWIDGET_H
#include
class Mywidget:public Qwidget//Mywidget继承Qwidget
{ Q_OBJECT//Q0BJEC宏写了这个宏就支持了Qt中的信号和槽机制public:Mywidget(QWidget*parent=0);//构造函数
~Mywidget();//析构函数};
#endif//MYWIDGET_H
快捷键 以及命名规范 /类名首字母大写单词与单词之间首字母大写
函数、变量首字母小写单词与单词之间首字母大写
快捷键
运行ctrl+R
编译 ctrl+B
查找ctrl+F
帮助文档F1
字体缩放ctr1+鼠标滚轮
自动对齐 ctrl+i
整行移动ctr1+ shift+上键或者:
/同名之间的.h.cpp切换F4
帮助文档第一种:F1第二种:左侧按钮第三种:在文件管理中找文档exe
ctrl +? 注释
检查是否有对应的类的头文件
文章图片
查询文档基本信息
文章图片
设置编码格式防止乱码问题
文章图片
创建按钮
Mywidget::Mywidget(QWidget *parent)
:QWidget(parent)//初始化列表调用父类的构造函数
//按钮
QPushButton *btn =new QPushButton;
//btn->show();//show用顶层方式弹出,如果想在MyWidget窗口中显示,就需要依赖Mywidget窗口设置父类
/∥设置父亲
btn->setParent(this);
//设置文字
btn->settext(“德玛西亚");//将char*隐式类型转为Qstring//创建按钮第二种方式窗口会按照 btn2大小进行显示
QPushButton *btn2=new QPushButton("第二按钮",this);
//重置窗口大小这种会改变窗口大小 和按钮大小相同
resize(600,400);
//移动第二个按钮
btn2->move(100,100);
//按钮是否可以重置大小resize?可以
btn2->resize(50,50);
//重置窗口标题
setWindowTit1e(“Qt第一个窗口叶);
}
qt一定程度减轻了内存回收机制
对象树(所有用new生成的对象不用手动去进行释放)
文章图片
程序运行完成后逐个释放
文章图片
文章图片
执行析构的时候,先去执行析构函数的操作,再释放掉内存
文章图片
打印函数 qDebug()<<"打印内容";
QT中的坐标系
文章图片
QT中的信号和槽(重要)
文章图片
sloct槽的引文单词
点击myBtn关闭窗口或者是父类的对象
//信号的发送者发送的信号参数信号的接受者处理的槽函数
//connect(myBtn,&MyButton::clicked,this,&Mywidget::close);
松散耦合的优势
文章图片
自定义的信号和槽 创建一个普通类,不用窗口,使用QObject类
文章图片
自定义信号: //自定义信号需要写到signals下
//返回类型必须void
//信号只需要声明// //不需要实现//信号可以有参数,可以重载void hungFy();
自定义槽函数: //自定义槽函数
//高版本可以写到public下或者全局函数
//槽函数返回值void
//槽函数需要声明也需要实现可以有参数和重载void treat();
emit()函数触发信号出发函数才能发出信号 c++中的调用
老师饿了---》学生请老师吃饭
文章图片
文章图片
文章图片
文章图片
指针函数返回的是指针 即地址函数指针 用指针指向不同的函数 实现调用
文章图片
QT4信号槽和信号的写法
文章图片
//Qt4版本信号和槽写法
类型匹配不检测
7/不推荐Qt4版本信号槽写法,原因:类型匹配不检测//优点:
参数类型比较直观,发生重载也不用写函数指针(直接将对应的参数变成了字符串处理)
connect(zt,SIGNAL(hungry(void)),st,SLoT(treat(&string)));
connect(zt,SIGNAL(hungry(void)),st,SLoT(treat(&string)));
信号:SIGNAL
槽:sLoT下优点参数直观
不用写函数指针不会做类型检测。
Lambda表达式
C++11中的Lambda表达式用于定义并创建匿名的函数对象,以简化编程工作。
首先看一下Lambda表达式的基本构成:
文章图片
文章图片
文章图片
[](){}
[]内部=值传递推荐&引用传递不推荐
()参数T
{}函数实现体
mutable 改变值传递的内部变量。
返回值[]()->type{}
Qwindow是一个为用户提供主窗口程序的类,合一个菜单(menu bar)、多个工具栏(toolbars)、多个缆越都件(dock widgets)、一个状态栏(status bar)
及一个中心部伴(central widget),是许多应用程序的基础,如文本编辆器,图片编辑器等。
菜单栏的创建
文章图片
文章图片
菜单栏
1.1只能有一个。
1.2 menuBar()返回一个QMenuBar"bar;
1.3将bar放入到窗口中setMenuBar(bar)
1.4添加菜单 addMenu(“文件”)
1.5添加菜单项addAction(“新建”
1.6分割线addSeparator()工具栏
2.1可以多个。
2.2QToolBar
2.3addToolBar(停靠位置,toolbar)
2.4设置停靠、浮动、移动。
2.5工具栏中可以添加菜单项
2.6也添加分割线
状态栏 核心部件
文章图片
文章图片
模态和非模态 点击新建弹出对话框
兼容设置
文章图片
模态是不可以对其他按钮进行操作
文章图片
创建指针是为了创建的到堆上不会被释放(但是存在内存溢出的风险)
文章图片
创建属性,关闭时会销毁堆上的内存
系统默认对话框设置和自定义对话框
文章图片
标准颜色对话框·
7.4.1QColorDialog
7.4.2 getColor 返回 QColor标准文件对话框。
7.5.1QFileDialog()
7.5.2getOpenfileName(父亲,标题,默认路径,过滤文件格式)
其他作用的对话框
文章图片
设置ui界面 登陆界面
8.1利用Widget做容器,容器内部进行水平、垂直布局
8.2灵活运用弹簧。
8.3设置属性间隙默认99998.4垂直策略
常用控件
文章图片
选择资源文件
radio button单选框
对话框
7.1模态对话框
7.1.1 exec() 阻塞
7.2非模态对话框。
7.2.1show在越上会一闪而过。
7.2.2所以new在堆区…
7.2.3设置属性dlg2-> setAtribute(Qt:WA.DeleteOnClosel;
系统标准对话框QMessageBox
7.3.1静态成员函数
7.3.2QMessageBox::警告、信息、错误、问题。
7.3.35个参数父亲、标题、提示内容、按健类型、关联回合按键
状态栏
3.1只能有一个
3.2 statusBar()返回 ostatus*sBar
3.3 addStatusBar(sBar)
3.4添加内容addWidget(Qlabel)
3.5添加右侧信息
铆接部件
4.1可以有多个
4.2QDockWidget
4.3 addDockWidget(停靠位置,….
4.4后期设置停靠
核心部件( 用set设定的只能有一个 而add可以有多个)
setCenteralWidget()
资源文件
文章图片
6.1将使用的图片资源放入到项目中6.2右键项目-添加新文件-Qt-ResourceFile
6.3起名称res生成res.qrc
6.4右键res.qrc open in editor
6.5添加前缀添加文件。
6.6使用:+前缀名+文件名
常用控件 按钮组
9.1.1 PushButton 按钮
9.1.2 ToolButton 工具按钮多用于显示图片,ToolButtonstyle修改风格 autoRaise透明风格
9.1.3 RadioButton.单选 setChecked(ture)
9.1.4 CheckBox 多选statechange独特的信号0未选中1半选
文章图片
复选框
文章图片
通过对象或者匿名对象的方法
listWidget 控件。
9.2.1 QListWidgettem 每一个项目
9.2.2 item可以设置对齐方式
9.2.3 item->set TextAlignment(Ot:AlignHCenter);…
9.2.4一次性的将所有内容添加
9.2.5 addltems(QStringList)
tree控件
QTreeWidget控件使用
9.3.1设置头setHeaderlabels(QStringlist()<<“英雄”…)
9.3.2每个项目QTreeWidgetitem
9.3.3添加顶层项目 addTopleaveltem
9.3.4添加子项目addChil
自定义控件
文章图片
文章图片
自定义控件封装
1.1创建Qr-设计师界面类,
1.2拖拽Widget 右键提升为-类名写入-全局包含-添加-提升。
1.3QSpinBox 移动Slider 跟着移动。
1.4对外接口封装一些函数
鼠标事件
文章图片
文章图片
文章图片
【c++|qt基础入门教程】
鼠标事件
2.1鼠标进入enterEvent2.2鼠标离开leaveEvent
2.3鼠标按下、释放、移动。
2.3.1通过ev获取到xy
2.3.2 ev判断鼠标左右键2.3.3 QString格式化字符串%1%2a
定时器
文章图片
定时器使用
3.1 timerEvent 事件。
3.2启动定时器 startTimer(毫)返回值就是ld号
3.3区分定时器timerld-T
第二中定时器的方法
文章图片
文章图片
事件的分发
文章图片
事件过滤器
文章图片
文章图片
事件过滤器
6.1哪个控件需求过滤事件就给哪个控件安装过滤器
6.2步骤1安装过滤器
6.3 ui->label->installEventFilter(this);
6.4步骤26.4.1重写事件
绘图工具
文章图片
文章图片
7.1绘图事件 paintEvent
7.2 QPainter painter(绘图设备 this)
7.3 draw..线圆矩形文字
7.4 QPen 设置笔宽度样式}
7.5QBrush 设置画刷样式
文章图片
8.1抗锯齿
8.1.1 painter.setRenderHint(QPainter::Antialiasing);
8.2画家移动
8.2.1 painter.translate(QPoint(100,0));
8.3画家状态
save()保存状态保存位置restore()归位
点击按钮 图片滑动
文章图片
文章图片
手动调用绘图事件
9.1 update
9.2画家可以画图片
9.3 drawPixmap(x,y “dizhi ”)
绘图设备保存到磁盘上
文章图片
文章图片
文件操作
文章图片
文章图片
11.1 QFile file(路径)
11.2fle.open 打开方式QloDevice::ReadOnly
11.3 fle.readAll readline(file.atEnd 判断是否到文件尾
11.4写QlODevice::WriteOnly
11.5 file.write("..")
小结:
4.Pro文件。
4.1QT+=所属模块widget4版本以上4.2 TARGET 生成exe 程序名称。
4.3TEMPLATE app 应用程序模板。
4.4 SOURCE HEADER 源文件头文件。
5Main函数
5.1QApplication a应用程序对象有且仅有一个。
5.2a.exec()进行消息循环阻塞。
5.3 MyWidgetw窗口对象。
5.4默认不会弹出窗口想要显示窗口需要调用show.
6QPushButton
6.1 QPushButton"btn =new QPushButton;
6.2btn->setParent(this)设置父亲。
6.3 btn->setText("aaa")
6.4 btn->move(xy)
6.5重置窗口大小 resize(wh)
7.1所有new出来的对象不用管释放。
7.2原因children表中的对象会在窗口关闭后进行自动释放8t中的坐标系8.1x正向→
8.2y正向
9Qt中的信号和措
9.1需求点击按钮关闭窗口。
9.2 connect(信号发送者,发送的信号,信号接受者,处理槽函数)
9.3优点松散耦合。
10t中的自定义信号和撞
10.1自定义信号
10.1.1返回值void
10.1.2需要声明个需要实现。
10.13可以有参数。
10.2自定义槽函数。
10.2.1返回值 void
10.2.2需要声明需要实现。
10.2.3可以有参数。
10.3触发自定义的信号
10.3.1 emit实现触发调用
10.4当自定义信号和撞出现重载时候,原先写法失效,因为执行的函数地址不明确10.5解决方法:利用函数指针来明确指向哪个函数的地址。
10.6 QString 转 char*toutf8 转QBtyeArray类型在利用 data 转成 char*否则输出有引号
推荐阅读
- java|Java 中的超快微服务( 当Microstream遇上Open Liberty)
- 数据结构|字符串处理函数
- 程序人生|程序员高考卷曝光,你能得多少分()
- 笔记|C语言程序设计----初识C语言与程序设计(一)简答
- 笔记|C语言程序设计----初识C语言与程序设计
- qt|第七章(Qt设计师使用(designer))
- javascript|JavaWeb之JavaScript
- C++的布尔类型(bool)
- C/C++基本数据类型 所占字节数 在内存中存储方式 内存 指针