验证事件过滤器简易实例
此项目实现过程:
当发生一个事件时,我们首先判断该事件的接收者是否为lineEdit组件;如果是,则进一步判断事件类型是否为键盘事件。如果两者都成立,则根据按下键盘来交错放大或缩小编辑框中的图片
程序代码:https://github.com/CFC-F/Qt-LearningProcess/tree/master/Projects/2-QEventFliter
对于事件过滤器的学习,可进入浅谈事件过滤器进行了解
程序过程记录
1、创建一个基于MainWindow类的项目
2、右击项目,选择【添加新文件】–>【Qt】–>选择Qt分类中【Qt Resource File】,之后文件名自己命名,其他选项默认即可。
3、建立好资源文件后会默认进入资源管理界面,可以把图片先存放到项目下,在资源管理界面,按下“添加”按钮,选择“添加前缀”,然后将属性栏中的前缀改为“/myImage”,再点击“添加”按钮,选择“添加文件”,在弹出的对话框中进入到图片所在文件夹,选中图片后,点击打开即可。最后按下Ctrl+S快捷键,保存对文件的修改,(或者对项目进行构建)不进行这一步,就无法使用图片
(注意:Qt的资源系统要求资源文件必须放在与qrc文件同级或子级目录下,如果放在其他地方,当添加资源时会提示将文件复制到有效的位置)
4、在ui界面添加lineEdit组件,用于改变图片的放缩 ;添加label部件,用于存放图片,点击label,在右下方的属性中,选择Qlabel下的【pixmap】,点击右边的【下三角图标】–>选择资源,在打开的对话框中,选择之前放在资源文件中的图片即可
5、在项目中,mainwindow.h文件下添加函数声明
在项目中,mainwindow.h文件下添加图片的相关类
#include <QMatrix>
#include <QTextFrame>
#include <QLineEdit>
6、在mainwindow.cpp文件中
在构造函数中,安装事件过滤器函数,并进行相关内容的定义
添加eventFilter()函数
7、除了用事件过滤器,控制图片的缩放外,还可以用其他函数进行实现
例如:在ui界面中,添加一个pushButton组件,在右下方pushButton组件的属性处选中【checkable】
右键点击按钮,选中【转到槽】,在出现的界面选中【clicked(bool checked)】
随之后转到槽函数,即在mainwindow.cpp文件下,添加以下内容
如果想让组件随图片的变化一起进行位置变化的话,可以选择【整个窗体】,选择布局【在窗体布局中布局(F)】,让这个窗体进行布局即可