河南网站优化公司哪家好,wordpress实现ajax评论,wordpress 模板 导航,品牌建设案例什么是事件#xff1f;
点击鼠标左键#xff0c;双击鼠标左键#xff0c;鼠标来回移动#xff0c;按下键盘按钮#xff0c;这些都是事件。
那么事件的响应机制是什么样的呢#xff1f;
首先main函数中有一个QApplication#xff0c;其作用是创建一个应用程序对象
点击鼠标左键双击鼠标左键鼠标来回移动按下键盘按钮这些都是事件。
那么事件的响应机制是什么样的呢
首先main函数中有一个QApplication其作用是创建一个应用程序对象然后该应用程序对象调用exec这个函数这个函数所起的作用是会在当前应用程序下一直检测是否有事件产生当有事件产生的时候就会触发一系列的动作。
事件的产生和处理可以分为几个重要的步骤来理解
1.事件的产生
2.事件过滤
3.事件分发
4.事件处理
首先
1.事件的产生
我们知道事件产生后被应用程序对象的exec函数检测到这个时候应用程序对象会调用一个notify函数将事件发送到指定的窗口里面去。
2.事件过滤
在事件发送到指定窗口的过程中我们是可以通过事件过滤器进行过滤的。QObject里面有一个成员函数叫做evenFilter这个eventFilter是可以过滤掉一些事件的。而且这个eventFilter是一个虚函数我们是可以对该函数进行重写的可以在该函数内编辑那些是可以过滤掉的。默认情况下是不对任何事件进行过滤的我们翻查Qt助手可以知道QObject是QApplication的基类因此QApplication中可以定义事件过滤因此可以说事件过滤是main函数中的QAppliaction生成的对象a所完成的。 3.事件分发
Qwidget可以对事件进行分发
4.事件处理
Qwidget中有事件处理的函数是虚函数可以进行重写。 有图可知事件发送到指定窗口后由窗口来对事件进行处理。
上面所说的一系列动作都是自动完成的这些事件函数都是回调函数作为使用者来说我们只需要指定函数的处理动作关于函数是如何是如何调用的我们不需要关心。可以理解为是Qt这个框架自动调用的我们只需要完成调用后执行什么内容。
所以我们只需要重写事件处理函数就可以了即123步骤由Qt这个框架自动完成。 鼠标点击处理事件重写
1重写QWidget的mousePressEvent事件 1.首先声明方法 最后实现方法 由图可知该坐标轴是以左上角的点来作为圆点的
注意只有在Widget界面上面点击鼠标才能其效。 2重写QWidget中的mouseReleaseEvent事件处理函数
即我们在窗口中释放鼠标会发生什么这是释放鼠标的时候提示一下就可以了。
void QWidget::mouseReleaseEvent(MouseEvent *event);//在widget.h文件中进行声明;
//在.cpp文件中进行实现void Widget::mouseReleaseEvent(MouseEvent *event)
{qDebug() mouse is released.;} (3)重写QWidget中的mouseDoubleClickEvent
这里重写mouseDoubleClickEvent方法做到双击全屏再双击恢复到原始窗口。
//在widget.h文件下进行声明 void mouseDoubleClickEvent(QMouseEvent *event);//在widget.cpp文件下进行实现
void Widget::mouseDoubleClickEvent(QMouseEvent *event)
{if(event-button() Qt::LeftButton)//如果这个双击事件是一个左键的话{if(windowState() ! Qt::WindowFullScreen)//如果现在窗口的状态不是全屏的话{setWindowState(Qt::WindowFullScreen);}else{setWindowState(Qt::WindowNoState);//如果双击前已经是全屏了则恢复到初始状态}}} 4重写QWidget中的mouseMoveEvent
这里重写mouseMoveEvent实现窗口的拖拽
//在widget.h文件下进行声明protected:void wheelEvent(QWheelEvent *event);//在widget.cpp文件下进行定义void Widget::wheelEvent(QWheelEvent *event)//注意这里改成了wheelEvent表示是滚轮的操作
{if(event-delta() 0)//delta就是数学中的▲表示增量{ui-textEdit-zoomIn();//往上滚动是聚焦}else{ui-textEdit-zoomOut();//往下滚动是缩小}} 5重写QWidget中的wheelEvent
重写QWidget中的wheelEvent使其通过滚轮改变字体的大小。
先搞一个TextEdit //在widget.h
void wheelEvent(QWheelEvent *event);//在widget.cpp
void Widget::wheelEvent(QWheelEvent *event)//注意这里改成了wheelEvent表示是滚轮的操作
{if(event-delta() 0)//delta就是数学中的▲表示增量{ui-textEdit-zoomIn();//往上滚动是聚焦}else{ui-textEdit-zoomOut();//往下滚动是缩小}}心得
Qt中的所有宏和枚举量都是在Qt这个类下面的以后找枚举量去Qt下面找。学习Qt就是要多敲记住一些常用的方法记不住就去查Qt小助手总的来说现在记不住没关系用多了就记住了。