qt基础入门教程

1、t的介绍、优点、成功案例             5.8.0

Qt是一个跨平台的C++图形用户界面应用程序框架。它为应用程序开发者提供建立艺术级图形界面所需的所有功能。爸是完全面向对象的,很容易扩展,并且允许真正的组件编程。

  推荐安装

 wps   linux 桌面环境   虚拟机软件  屏幕共享

qt基础入门教程_第1张图片

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

子父类的关系   

qwidget  单纯窗口

QMainWindow  页面扩展菜单栏 

QDialog  弹出对话框

qt基础入门教程_第2张图片

 项目文件

 第一个qt程序    (main.cpp文件内的编写)

qt基础入门教程_第3张图片

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

检查是否有对应的类的头文件

qt基础入门教程_第4张图片

查询文档基本信息

 qt基础入门教程_第5张图片

设置编码格式防止乱码问题

qt基础入门教程_第6张图片

创建按钮

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生成的对象不用手动去进行释放)

 qt基础入门教程_第7张图片

 程序运行完成后逐个释放

qt基础入门教程_第8张图片

qt基础入门教程_第9张图片

执行析构的时候,先去执行析构函数的操作,再释放掉内存

 qt基础入门教程_第10张图片

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

QT中的坐标系

qt基础入门教程_第11张图片

QT中的信号和槽(重要)

 sloct槽的引文单词

点击myBtn关闭窗口
//   信号的发送者    发送的信号参数    信号的接受者        处理的槽函数
//connect(myBtn,&MyButton::clicked,this,&Mywidget::close);

或者是父类的对象

松散耦合的优势    

qt基础入门教程_第12张图片

自定义的信号和槽

创建一个普通类,不用窗口,使用QObject类  

qt基础入门教程_第13张图片

 自定义信号:

//自定义信号需要写到signals下
//返回类型必须void
//信号只需要声明                                                                                                                             // //不需要实现                                                                                                                                        //信号可以有参数,可以重载                                                                                                              void hungFy();

自定义槽函数:

//自定义槽函数
//高版本可以写到public下或者全局函数
//槽函数返回值void
//槽函数需要声明也需要实现               可以有参数和重载                                                                      void treat();

emit()函数触发信号   出发函数才能发出信号 c++中的调用

老师饿了---》学生请老师吃饭

qt基础入门教程_第14张图片

 qt基础入门教程_第15张图片

 qt基础入门教程_第16张图片

qt基础入门教程_第17张图片

指针函数  返回的是指针 即地址                                                                                                函数指针 用指针指向不同的函数 实现调用 

qt基础入门教程_第18张图片

  QT4信号槽和信号的写法

qt基础入门教程_第19张图片

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

qt基础入门教程_第20张图片

 qt基础入门教程_第21张图片

qt基础入门教程_第22张图片

[](){} 

[]内部=值传递推荐     &引用传递不推荐

()参数T
{}函数实现体
mutable 改变值传递的内部变量。
返回值[]()->type{}

Qwindow是一个为用户提供主窗口程序的类,合一个菜单(menu bar)、多个工具栏(toolbars)、多个缆越都件(dock widgets)、一个状态栏(status bar)
及一个中心部伴(central widget),是许多应用程序的基础,如文本编辆器,图片编辑器等。

菜单栏的创建

qt基础入门教程_第23张图片

 qt基础入门教程_第24张图片

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

状态栏 核心部件

qt基础入门教程_第25张图片

qt基础入门教程_第26张图片

模态和非模态

点击新建弹出对话框

兼容设置qt基础入门教程_第27张图片

 模态是不可以对其他按钮进行操作qt基础入门教程_第28张图片

 创建指针是为了创建的到堆上不会被释放(但是存在内存溢出的风险)

 

 创建属性,关闭时会销毁堆上的内存

系统默认对话框设置和自定义对话框

qt基础入门教程_第29张图片

 标准颜色对话框·
7.4.1QColorDialog
7.4.2 getColor 返回 QColor标准文件对话框。
7.5.1QFileDialog()
7.5.2getOpenfileName(父亲,标题,默认路径,过滤文件格式)

 其他作用的对话框

qt基础入门教程_第30张图片

设置ui界面

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

常用控件

qt基础入门教程_第31张图片

 选择资源文件

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()

资源文件

qt基础入门教程_第32张图片


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半选

qt基础入门教程_第33张图片

复选框

qt基础入门教程_第34张图片

 通过对象或者匿名对象的方法

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

自定义控件

qt基础入门教程_第35张图片

 qt基础入门教程_第36张图片

自定义控件封装
1.1创建Qr-设计师界面类,
1.2拖拽Widget 右键提升为-类名写入-全局包含-添加-提升。
1.3QSpinBox 移动Slider 跟着移动。
1.4对外接口  封装一些函数 

鼠标事件

qt基础入门教程_第37张图片

 

 qt基础入门教程_第38张图片

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

定时器

qt基础入门教程_第39张图片

定时器使用
3.1 timerEvent 事件。
3.2启动定时器 startTimer(毫)返回值就是ld号
3.3区分定时器timerld-T

第二中定时器的方法

qt基础入门教程_第40张图片

 qt基础入门教程_第41张图片

事件的分发

qt基础入门教程_第42张图片

事件过滤器

qt基础入门教程_第43张图片

qt基础入门教程_第44张图片

事件过滤器
6.1哪个控件需求过滤事件就给哪个控件安装过滤器
6.2步骤1安装过滤器
6.3 ui->label->installEventFilter(this);
6.4步骤26.4.1重写事件

绘图工具

qt基础入门教程_第45张图片

 qt基础入门教程_第46张图片

 7.1绘图事件 paintEvent
7.2 QPainter painter(绘图设备 this)
7.3 draw..线圆矩形文字
7.4 QPen 设置笔宽度样式}
7.5QBrush 设置画刷样式

qt基础入门教程_第47张图片

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

save()  保存状态保存位置     restore()       归位

点击按钮 图片滑动

qt基础入门教程_第48张图片

qt基础入门教程_第49张图片

手动调用绘图事件
9.1 update
9.2画家可以画图片
9.3 drawPixmap(x,y “dizhi ”)

绘图设备保存到磁盘上

qt基础入门教程_第50张图片

qt基础入门教程_第51张图片

文件操作

qt基础入门教程_第52张图片

 qt基础入门教程_第53张图片

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

你可能感兴趣的:(c++,qt,开发语言,c++)