1QT介绍
QT是一种跨平台的C++图形用户界面编程框架;是一种C++类库;
500多个c++类,core模块 gui模块 network模块 sql模块 。。。
2 创建QT ui工程
Q_OBJECT:支持信号和槽的机制
QT UI界面上两个子控件如何实现数据通信?用信号和槽的机制
3 信号和槽
信号:信息的发送方发出的指令
槽(函数):信号的接收方对信号做出的响应动作(函数)
特点: 1 专门用来响应信号的函数,当对应的信号发出,槽函数被系统自动调用
2 是类的成员函数
3 由 访问限定符 slots:声明的函数才是槽函数
4 信号和槽的关联方式
1 按钮转到槽(简单且常用)
2 connect(信号的发送方,发出的信号,信号的接收方,接受方使用槽函数)
QObject::connect
3 画信号和槽
4 emit和connect
--->可以解决非ui界面的后台程序中两个对象之间的通信
信号函数:是专门用来发送信号的。使用:emit 信号函数
特点:1 是类的成员函数
2 是专门用来发信号的,如何用:emit 信号函数
3 被声明为signals:的函数为信号函数
4 只有声明没有定义
5 信号函数声明前没有访问限定符,而槽函数必须有
send s("test21051");
recv r;
connect(s,r);
s.deliver();
5 信号和槽的对应关系
一个信号对应一个槽(普遍)
一个信号对应另一个信号(较少)
一个信号对应多个槽
多个信号对应一个槽
6 创建非UI工程,手写代实现控件
day1作业:
1 实现界面切换
2 实现简易计算器
day2:
1 对话框窗体
定义:对话框是一种窗体,是一种上浮在底层窗体上的顶层窗体,出现在程序的最上层,用来实现主窗体和用户的短期任务交互。
特点:1 一般用来实现那些只是暂时存在的用户界面
2 对话框窗体是一个独立的窗体,一般有父窗体
3 对话框窗体没有最大化、最小化
常见的对话框窗体:信息对话框 告警对话框 文件对话框 颜色对话框 字体对话框 ...
QT提供了20几个对话框类
创建QT工程时,QT提供了3种基类:
QWidget:是所有窗口部件的基类
QMainWindow:是带有菜单栏 工具栏的主窗体类
QDialog:是各种对话框的基类
1.1文件对话框-->QFileDialog::getOpenfilename
打开文件对话框
getOpenfilename---->得到一个打开文件对话框
参数1:父对象(父组件)Q_NULLPTR
参数2: 对话框的标题
参数3:对话框显示时默认打开的目录"d:/2021"
参数4:对话框中文件名后缀的过滤器选项(txt;jpg;mp3;)
参数5:默认的过滤选项(txt)
返回值:用户选中的要打开的文件名(含绝对路径)
保存文件对话框-->getSavefilename()
1.2 字体对话框-->QFontDialog
getFont---->得到一个字体对话框
参数1:用来保存是否点击了确定按钮值
参数2:字体的初始化样式
参数3:父对象,Q_NULLPTR
参数4:字体对话框标题
返回值:已经选择好的字体样式
1.3颜色对话框-->QColorDialog
getColor---->得到一个颜色对话框
参数1:颜色对话框的默认颜色值 Qt::white
参数2:父对象,Q_NULLPTR
参数3:颜色对话框的标题
参数4:使用哪种颜色库(Qt提供的标准颜色库或Windows的颜色库)
QColorDialog::DontUserNativeDialog
返回值:用户选中的颜色值
1.4 消息对话框-->QMessageBox
关于对话框
about():得到一个关于对话框(自定义的)
参数1:父对象
参数2:对话框标题
参数3:对话框正文内容
aboutQt():得到一个关于Qt的对话框
参数1:父对象
参数2:对话框标题
信息对话框
information()-->得到一个信息对话框
参数1:父对象
参数2:对话框标题
参数3:对话框文本内容
参数4:传给函数的按钮值
返回值:用户按下的按钮值
告警对话框
warning()----->得到一个告警对话框
参数1:父对象
参数2:对话框标题
参数3:对话框文本内容
参数4:传给函数的按钮值
返回值:用户按下的按钮值
1.5 输入对话框-->QInputDialog
getInt():得到一个输入整数对话框
参数1:父对象
参数2:对话框的标题
参数3:输入提示符
参数4:输入对话框的默认值
参数5:最小值
参数6:最大值
参数7:步进值
参数8:存放按钮值(ok/cancel)的变量
返回值:用户输入的并且确定的整数值
1.6 进度对话框
2 定时器
QTimer timer;timer->start(1000);--->timeout<--->槽函数
timer->stop();
day2作业:
1 实现保存文件对话框
2 实现电子时钟
day3:
1 添加资源文件
资源文件:在qt工程中非代码性的文件为资源文件,包括图标、图片、动图等
1.1显示资源图标
1 给工程创建一个存放资源的文件夹,然后将资源图片添加到该文件夹
2 QIcon icon(":/1.png");
3 ui->pushbutton->setIcon(icon);
1.2显示资源图片 QPixmap QImage QBitmap QPicture
1 给工程创建一个存放资源的文件夹,然后将资源图片添加到该文件夹
2 QPixmap pix(":/2.jpg");
QPalatte pal
1.3 显示动图
2 布局
定义:让某个平面和空间中的子控件按照某种顺序排列整齐
qt中的布局是指让UI界面上的子控件按照某种顺序排列整齐
QT提供的布局方式:1 UI设计器提供的布局控件
2 UI设计器---》右键--》布局
3 手写代码实现布局
布局种类:水平布局--》QHBoxLayout
1 QHBoxLayout qhb;//水平布局框
2 将参与布局的子控件添加到布局框中
3 使水平布局生效this->setLayout(qhb)
垂直布局--》QVBoxLayout
网格布局-->QGridLayout
addWidget()
参数1:参与布局的子控件
参数2:该控件位于哪行
参数3:该控件位于哪列
参数4:该控件占该行的比例(份数) 1
参数5:该控件占该列的比例 (份数)2
3 主窗体--->QMainWindow
3.1手写代码实现主窗体
QMenuBar 菜单栏类 QMenu 菜单类 QAction 动作类
QToolBar 工具栏
QStatusBar 状态栏
3.2 使用UI设计器实现主窗体
openfile--->QFileDialog QFile file.open(QIODevice::ReadOnly)
file.readAll--->textEdit
QFileInfo info;info.getName()
stat("1.txt",&info)
day4:
事件(函数):QT已经预先定义好的某些信号对应的处理动作函数。
若QT工程中要使用这些事件函数,需要重写事件函数
事件函数无需用户主动调用,也无需用户将其和某个信号关联,这些事件函数就是对应信号的槽函数,当信号发出,事件函数会被系统自动调用。
QOBject
1 键盘事件
键盘按压事件: keyPressEvent(QKeyEvent &)
键盘释放事件:keyReleaseEvent(QKeyEvent &)
2 鼠标事件
鼠标按压事件:mousePressEvent(QMouseEvent &)
鼠标释放事件: mouseReleseEvent(QMouseEvent &)
鼠标移动事件: mouseMoveEvent(QMouseEvent &)
鼠标双击事件: mouseDoubleClickedEvent(QMouseEvent &)
3 事件过滤函数
bool eventFilter(QObject *watched, QEvent *event)
既可以过滤鼠标事件有可以过滤键盘事件
QEvent:通用事件类
派生出了 QKeyEvent和QMouseEvent
QEvent *event a
QEvent QKeyEvent *tmp key()--->获取当前对象的按键值
QKeyEvent *tmp=static_cast<QKeyEvent *>(event)
int ret=tmp->key()
4 定时器事件
timerEvent(QTimerEvent *event)
startTimer(1000);
5 显示照片
QPixmap QImage
6 网络信息获取
QNetworkRequest--->用于表示网络请求
QNetworkAccessManger-->用于协调网络操作 get
QNetworkReply-->用于网络请求的响应