c++|qt基础入门教程



1、t的介绍、优点、成功案例5.8.0 Qt是一个跨平台的C++图形用户界面应用程序框架。它为应用程序开发者提供建立艺术级图形界面所需的所有功能。爸是完全面向对象的,很容易扩展,并且允许真正的组件编程。
c++|qt基础入门教程
文章图片
推荐安装
wpslinux 桌面环境虚拟机软件屏幕共享
c++|qt基础入门教程
文章图片




QT名称中不支持中文命名和中午路径 不能添加空格

子父类的关系
qwidget单纯窗口
QMainWindow页面扩展菜单栏
QDialog弹出对话框
c++|qt基础入门教程
文章图片

项目文件
c++|qt基础入门教程
文章图片

第一个qt程序(main.cpp文件内的编写) c++|qt基础入门教程
文章图片


#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 +? 注释


检查是否有对应的类的头文件
c++|qt基础入门教程
文章图片

查询文档基本信息
c++|qt基础入门教程
文章图片

设置编码格式防止乱码问题
c++|qt基础入门教程
文章图片

创建按钮
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生成的对象不用手动去进行释放) c++|qt基础入门教程
文章图片

程序运行完成后逐个释放

c++|qt基础入门教程
文章图片

c++|qt基础入门教程
文章图片


执行析构的时候,先去执行析构函数的操作,再释放掉内存
c++|qt基础入门教程
文章图片

打印函数 qDebug()<<"打印内容";

QT中的坐标系 c++|qt基础入门教程
文章图片


QT中的信号和槽(重要) c++|qt基础入门教程
文章图片

sloct槽的引文单词
点击myBtn关闭窗口
//信号的发送者发送的信号参数信号的接受者处理的槽函数
//connect(myBtn,&MyButton::clicked,this,&Mywidget::close);
或者是父类的对象
松散耦合的优势
c++|qt基础入门教程
文章图片


自定义的信号和槽 创建一个普通类,不用窗口,使用QObject类
c++|qt基础入门教程
文章图片

自定义信号: //自定义信号需要写到signals下
//返回类型必须void
//信号只需要声明// //不需要实现//信号可以有参数,可以重载void hungFy();
自定义槽函数: //自定义槽函数
//高版本可以写到public下或者全局函数
//槽函数返回值void
//槽函数需要声明也需要实现可以有参数和重载void treat();
emit()函数触发信号出发函数才能发出信号 c++中的调用

老师饿了---》学生请老师吃饭
c++|qt基础入门教程
文章图片


c++|qt基础入门教程
文章图片

c++|qt基础入门教程
文章图片

c++|qt基础入门教程
文章图片

指针函数返回的是指针 即地址函数指针 用指针指向不同的函数 实现调用
c++|qt基础入门教程
文章图片


QT4信号槽和信号的写法 c++|qt基础入门教程
文章图片


//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表达式的基本构成:

c++|qt基础入门教程
文章图片

c++|qt基础入门教程
文章图片


c++|qt基础入门教程
文章图片

[](){}
[]内部=值传递推荐&引用传递不推荐
()参数T
{}函数实现体
mutable 改变值传递的内部变量。
返回值[]()->type{}
Qwindow是一个为用户提供主窗口程序的类,合一个菜单(menu bar)、多个工具栏(toolbars)、多个缆越都件(dock widgets)、一个状态栏(status bar)
及一个中心部伴(central widget),是许多应用程序的基础,如文本编辆器,图片编辑器等。
菜单栏的创建 c++|qt基础入门教程
文章图片

c++|qt基础入门教程
文章图片

菜单栏
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也添加分割线

状态栏 核心部件 c++|qt基础入门教程
文章图片


c++|qt基础入门教程
文章图片


模态和非模态 点击新建弹出对话框

兼容设置c++|qt基础入门教程
文章图片

模态是不可以对其他按钮进行操作c++|qt基础入门教程
文章图片

创建指针是为了创建的到堆上不会被释放(但是存在内存溢出的风险)
c++|qt基础入门教程
文章图片

创建属性,关闭时会销毁堆上的内存
系统默认对话框设置和自定义对话框
c++|qt基础入门教程
文章图片

标准颜色对话框·
7.4.1QColorDialog
7.4.2 getColor 返回 QColor标准文件对话框。
7.5.1QFileDialog()
7.5.2getOpenfileName(父亲,标题,默认路径,过滤文件格式)
其他作用的对话框 c++|qt基础入门教程
文章图片

设置ui界面 登陆界面
8.1利用Widget做容器,容器内部进行水平、垂直布局
8.2灵活运用弹簧。
8.3设置属性间隙默认99998.4垂直策略

常用控件 c++|qt基础入门教程
文章图片

选择资源文件
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()

资源文件 c++|qt基础入门教程
文章图片


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半选
c++|qt基础入门教程
文章图片

复选框

c++|qt基础入门教程
文章图片

通过对象或者匿名对象的方法
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

自定义控件 c++|qt基础入门教程
文章图片

c++|qt基础入门教程
文章图片


自定义控件封装
1.1创建Qr-设计师界面类,
1.2拖拽Widget 右键提升为-类名写入-全局包含-添加-提升。
1.3QSpinBox 移动Slider 跟着移动。
1.4对外接口封装一些函数
鼠标事件 c++|qt基础入门教程
文章图片

c++|qt基础入门教程
文章图片

c++|qt基础入门教程
文章图片

【c++|qt基础入门教程】


鼠标事件
2.1鼠标进入enterEvent2.2鼠标离开leaveEvent
2.3鼠标按下、释放、移动。
2.3.1通过ev获取到xy
2.3.2 ev判断鼠标左右键2.3.3 QString格式化字符串%1%2a

定时器 c++|qt基础入门教程
文章图片


定时器使用
3.1 timerEvent 事件。
3.2启动定时器 startTimer(毫)返回值就是ld号
3.3区分定时器timerld-T
第二中定时器的方法
c++|qt基础入门教程
文章图片

c++|qt基础入门教程
文章图片

事件的分发 c++|qt基础入门教程
文章图片


事件过滤器 c++|qt基础入门教程
文章图片




c++|qt基础入门教程
文章图片

事件过滤器
6.1哪个控件需求过滤事件就给哪个控件安装过滤器
6.2步骤1安装过滤器
6.3 ui->label->installEventFilter(this);
6.4步骤26.4.1重写事件
绘图工具 c++|qt基础入门教程
文章图片

c++|qt基础入门教程
文章图片

7.1绘图事件 paintEvent
7.2 QPainter painter(绘图设备 this)
7.3 draw..线圆矩形文字
7.4 QPen 设置笔宽度样式}
7.5QBrush 设置画刷样式
c++|qt基础入门教程
文章图片

8.1抗锯齿
8.1.1 painter.setRenderHint(QPainter::Antialiasing);
8.2画家移动
8.2.1 painter.translate(QPoint(100,0));
8.3画家状态
save()保存状态保存位置restore()归位

点击按钮 图片滑动
c++|qt基础入门教程
文章图片


c++|qt基础入门教程
文章图片


手动调用绘图事件
9.1 update
9.2画家可以画图片
9.3 drawPixmap(x,y “dizhi ”)
绘图设备保存到磁盘上 c++|qt基础入门教程
文章图片


c++|qt基础入门教程
文章图片


文件操作
c++|qt基础入门教程
文章图片

c++|qt基础入门教程
文章图片

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*否则输出有引号





    推荐阅读