鼠标事件
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()函数了。
这里使用常见的几个鼠标事件的例子
直接上代码:
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;};
int main(int argc, char *argv[]){QApplication a(argc, argv);MyWidget widget;widget.show();return a.exec();}
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等原创技术文章。后台免费获取经典电子书籍和视频资源,实时更新,原创不易,请多支持,谢谢!
