Qt信号和槽、常用函数及绘图(sail)_第1页
Qt信号和槽、常用函数及绘图(sail)_第2页
Qt信号和槽、常用函数及绘图(sail)_第3页
Qt信号和槽、常用函数及绘图(sail)_第4页
Qt信号和槽、常用函数及绘图(sail)_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1 2 信号和槽 信号和槽的基本实现语句(掌握、重点) 信号和槽的连接规则(掌握、重点) 信号和槽的参数匹配规则(掌握、重点) 常用函数 QWidget等类常用函数(熟悉) 绘图 个性化图形绘制方法(掌握、重点) 常用QPainter类函数(熟悉) QPainter类实现个性化程序的方案(了解) 3 信号和槽 信号和槽的基本实现语句(掌握、重点) 信号和槽的连接规则(掌握、重点) 信号和槽的参数匹配规则(掌握、重点) 常用函数 QWidget等类常用函数(熟悉) 绘图 个性化图形绘制方法(掌握、重点) 常用QPainter类函数(熟悉) QPainter类实现个性化程序的方案(了解) 4 问题

2、的提出 例子的窗体中,点击“hide”或“show”按钮, 为何窗口能做出相应的响应? 问题的分析 显示功能对应对象的show()函数,隐藏功能对 应对应对象的hide()函数 点击按钮后执行该函数即可 问题的解决 使用“信号和槽”机制完成该任务的过程:按 下按钮clicked()信号产生槽函数hide() 被调用窗体隐藏 5 信号 一个特定的标识,当内部发生某些事件或状态 改变时能够被“发射” 槽 槽和普通的C+类的成员函数几乎是一样的 唯一不同的是:槽可以和信号连接在一起,当 发射这个信号的时候,就会自动调用这个槽 作用 对象之间通信的高级接口 事件出现时,通过发送信号将与之关联的槽函 数

3、激活,即执行槽函数代码 6 7 程序总结: 信号和槽的连接基本实现语句: QObject:connect(a,SIGNAL(a_signal(int), b,SLOT(b_slot(int) Connect是静态成员函数,需要加QObject: 如果是QObject子类来调用则不用 连接的两个对象需要在连接前已经存在,否则 会报错 a_signal和b_slot中只能有参数类型,而非具 体的值 8 一个信号可以连接多个槽 Task 再创建一个label,点击hide按钮或 show按钮按钮时两个label能同时显示或隐藏 多个信号可以连接一个槽 Task 在最初程序基础上再创建一个按钮,点 两

4、个按钮中任意一个都可以隐藏label 一个信号可以与另外一个信号相连接 Task 连接两个按钮的clicked信号 9 要把信号成功连接到槽或另一个信号,它们 的参数必须具有相同的顺序和类型 注:参数匹配的检查使用strcmp函数,所以类型必须 严格一致。如string和const string就不匹配 例外:信号参数比槽多,多余参数被忽略 如果类型不匹配,或信号和槽不存在,编译 时不会报错,运行时会有警告 10 练习1: 使用滑块控制LCD上的数字发生变化 练习2: 使用按钮控制动画的暂停和播放 11 在designer中创建一个按钮,一个标签 选择“编辑/信号和槽” 拖动连接按钮和标签,弹

5、出信号和槽选择 对话框,观察有哪些信号和槽 窗体/预览,查看效果 12 问题的提出 之前是使用Qt类中已定义的信号和槽,如果是 自己定义实现的类,如何加入信号和槽机制, 实现自己想要的功能? 问题的分析 声明自定义的信号,直接使用,无需实现 声明自定义的槽,跟类成员函数一样实现 问题的解决 声明时分别加入slots和signals关键字即可 使用信号时: emit my_order(angle) 13 类的声明开始处加入Q_OBJECT宏,标准C+ 不支持,Qt通过moc(Meta Object Compiler)工具自动将其转为C+代码 槽函数和普通C+类成员函数一样实现,但 是当做真正的槽

6、使用的时候访问权限的定 义没有任何效果 信号只需声明无需实现,定义的访问权限 没有意义 必须把类定义从实现文件中分离出来并放 到头文件中。 14 15 16 程序总结: 自定义的类一般可以从QWidget类继承 信号和槽都是类的成员函数 自定义槽加关键字slots 自定义信号加关键字signals 使用自定义信号: emit my_signal(参数列表) 17 练习1: 用两个按钮分别控制动画的暂停和继续播放 练习2: 创建一个按钮和LCD,每次点击按钮,LCD上的 数字值加1 练习3: 做一个简单的猜数字游戏。内部规则等独立为 一个类,该类的构造函数中随机产生目标值, 有槽函数接收用户猜测

7、的数字,发信号表明猜 测的结果 18 信号和槽 信号和槽的基本实现语句(掌握、重点) 信号和槽的连接规则(掌握、重点) 信号和槽的参数匹配规则(掌握、重点) 常用函数 QWidget等类常用函数(熟悉) 绘图 个性化图形绘制方法(掌握、重点) 常用QPainter类函数(熟悉) QPainter类实现个性化程序的方案(了解) 19 QWidget类: setEnabled(bool)控件使能 setDisabled(bool)输入使能 width()窗口宽度 height()窗口高度 close()关闭 show()显示 hide()隐藏 QFont类: QFont font(Helvetic

8、a,12,QFont:Bold) setFont(font)字体设置方式 20 QLCDNumber类: setNumDigits()位数设置 display()内容显示 QTimer类: start()启动定时 timeout()到时信号 QString类: toInt()字符串转整数 toAScii()16位字符串转8位 number()字符串转数字 fromAscii()8位字符串转16位 21 信号和槽 信号和槽的基本实现语句(掌握、重点) 信号和槽的连接规则(掌握、重点) 信号和槽的参数匹配规则(掌握、重点) 常用函数 QWidget等类常用函数(熟悉) 绘图 个性化图形绘制方法(掌

9、握、重点) 常用QPainter类函数(熟悉) QPainter类实现个性化程序的方案(了解) 22 Qt事件处理的意义 作为GUI界面,需要做很多和用户交互的事情。 事件(event)很大程度上就是响应用户动作 Qt的事件处理机制 事件产生时,调用event()函数,由它根据 事件类型调用相应的事件处理器,如 mousePressEvent()、paintEvent()等 所以约定的事件发生时对应的函数自动被调用。 通过重写该函数对应代码实现相应功能 23 绘图事件的意义 常用的控件外,怎样来一些个性的外观,比如 最基本的矩形、圆等; 重新实现paintEvent()函数可以绘制个性化控 件

10、,更能定制窗口部件,随心所欲控制外观; 绘图事件程序的处理流程 代码放置在paintEvent()中,即重新实现绘图 事件处理器; 创建QPaint类的对象,调用相关QPainter类的 函数实现个性化绘制; 24 Qt的二维图形绘制基于QPainter类 可以绘制几何形状(点、线、矩形、椭圆等) 可以绘制像素映射、图形和文字 高级特性:像素混合、渐变填充、平移、旋转等 QPainter类的使用 画笔(setPen):画线和边缘 画刷(setBrush):填充几何形状的图案 字体(setFont):用来绘制文字,字体可选 25 26 27 程序总结: 重新实现void paintEvent(Q

11、PaintEvent *)函 数 paintEvent函数中定义QPainter对象 使用该对象调用相关函数,实现绘图,绘图相 关的操作都需要在该函数体中执行 28 程序总结: 窗口视口转换模式,相当于把一张电子图片放到大小 不同的显示器上去显示 QPainter:setWindow(x,y,width,height)设置窗口 QPainter:setViewport(x,y,width,height)设置视口 29 QPainter类常用函数 drawEllipse()画椭圆 drawRect()画矩形 drawLine()画直线 drawPicture()画图片 drawImage() 绘图片 drawPixmap()绘图片 drawText()绘文本 fillRect()填充矩形 30 QPainter类常用函数 rotate()角度旋转 translate()坐标变换 save()画笔保存 restore()画笔恢复 setBrush()设置画刷 setPen()设置画笔 setFont()设置字体 31 信号和槽 信号和槽的基本实现语句(掌握、重点) 信号和槽的连接规则(掌握、重点) 信号和槽的参数匹配规则(掌握、重点) 常

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论