Qt 学习笔记-处理鼠标响应事件

鼠标事件

void mousePressEvent(QMouseEvent *event);        //单击
void mouseReleaseEvent(QMouseEvent *event); //释放
void mouseDoubleClickEvent(QMouseEvent *event); //双击
void mouseMoveEvent(QMouseEvent *event); //移动 void wheelEvent(QWheelEvent *event);             //滑轮

注意:鼠标事件使用的时候,加头文件

#include <QMouseEvent>


  Qt 程序需要在main()函数创建一个QCoreApplication对象,然后调用它的exec()函数。这个函数就是开始 Qt 的事件循环。在执行exec()函数之后,程序将进入事件循环来监听应用程序的事件。当事件发生时,Qt 将创建一个事件对象。Qt 中所有事件类都继承于QEvent。在事件对象创建完毕后,Qt 将这个事件对象传递给QObject的event()函数。event()函数并不直接处理事件,而是将这些事件对象按照它们不同的类型,分发给不同的事件处理器(event handler)。


    如上所述,event()函数主要用于事件的分发。所以,如果你希望在事件分发之前做一些操作,就可以重写这个event()函数了。


这里使用常见的几个鼠标事件的例子

直接上代码:

#ifndef MYWIDGET_H#define MYWIDGET_H
#include <QWidget>#include <QtGui>#include <QMouseEvent>
class MyWidget : public QWidget{public: MyWidget(); void mousePressEvent(QMouseEvent *event); void mouseMoveEvent(QMouseEvent *event); void mouseReleaseEvent(QMouseEvent *event); void paintEvent(QPaintEvent *event);
private: QPoint m_PointStart; QPoint m_PointEnd;};
#endif // MYWIDGET_H


#include <QtGui/QApplication>#include "mainwindow.h"
#include "mywidget.h"
int main(int argc, char *argv[]){ QApplication a(argc, argv); MyWidget widget; widget.show();
return a.exec();}


#include "mywidget.h"
MyWidget::MyWidget(){ resize(240,320);}
void MyWidget::mousePressEvent(QMouseEvent *event){  m_PointStart = event->pos();}
void MyWidget::mouseMoveEvent(QMouseEvent *event){ //m_PointEnd = event->pos(); //update();}
void MyWidget::mouseReleaseEvent(QMouseEvent *event){ m_PointEnd = event->pos(); update();}
void MyWidget::paintEvent(QPaintEvent *event){ QPainter painter(this); painter.setBrush(QBrush(QColor(255,0,0))); painter.drawPixmap(0,0,240,320,QPixmap("images/frame1.jpg"));
if(m_PointStart.x() < m_PointEnd.x()) painter.drawPixmap(0,0,240,320,QPixmap("images/frame2.jpg")); else if(m_PointStart.x() > m_PointEnd.x())        painter.drawPixmap(0,0,240,320,QPixmap("images/frame3.jpg"));}


推荐阅读

(点击标题可跳转阅读)

Qt 学习笔记-强势入门

Qt 学习笔记-Qt中添加背景图片的方法

C++小游戏:扑克牌21点

const 指针与指向const的指针

蜕变成蝶~Linux设备驱动之字符设备驱动

24小时学通Linux内核之进程


关注公众号【技术让梦想更伟大】,获取更多Linux/C/C++/Python/FPGA等原创技术文章。后台免费获取经典电子书籍和视频资源,实时更新,原创不易,请多支持,谢谢!