Qt-事件处理-鼠标事件

举报
DreamLife 发表于 2022/04/15 00:45:54 2022/04/15
【摘要】 根据书中的内容,简单的实现鼠标相关的内容 源代码如下 .h#ifndef MOUSEEVENT_H#define MOUSEEVENT_H #include <QMainWindow>#include <QLabel>#include <QStatusBar>#include <QMouse...

根据书中的内容,简单的实现鼠标相关的内容

源代码如下


  
  1. .h
  2. #ifndef MOUSEEVENT_H
  3. #define MOUSEEVENT_H
  4. #include <QMainWindow>
  5. #include <QLabel>
  6. #include <QStatusBar>
  7. #include <QMouseEvent>
  8. class MouseEvent : public QMainWindow
  9. {
  10. Q_OBJECT
  11. public:
  12. MouseEvent(QWidget *parent = 0);
  13. ~MouseEvent();
  14. protected:
  15. void mousePressEvent(QMouseEvent *e);
  16. void mouseMoveEvent(QMouseEvent *e);
  17. void mouseReleaseEvent(QMouseEvent *e);
  18. void mouseDoubleClickEvent(QMouseEvent *e);
  19. private:
  20. QLabel *statusLabel;
  21. QLabel *MousePosLabel;
  22. };
  23. #endif // MOUSEEVENT_H

 


  
  1. .cpp
  2. #include "mouseevent.h"
  3. MouseEvent::MouseEvent(QWidget *parent)
  4. : QMainWindow(parent)
  5. {
  6. setWindowTitle(tr("鼠标事件"));
  7. statusLabel = new QLabel;
  8. statusLabel->setText(tr("当前位置"));
  9. statusLabel->setFixedWidth(100);
  10. MousePosLabel = new QLabel;
  11. MousePosLabel->setText(tr(""));
  12. MousePosLabel->setFixedWidth(100);
  13. statusBar()->addPermanentWidget(statusLabel);
  14. statusBar()->addPermanentWidget(MousePosLabel);
  15. this->setMouseTracking(true);
  16. resize(400,200);
  17. }
  18. void MouseEvent::mousePressEvent(QMouseEvent *e)
  19. {
  20. QString str="("+QString::number(e->x())+","+QString::number(e->y()) +")";
  21. if(e->button()==Qt::LeftButton)
  22. {
  23. statusBar()->showMessage(tr("左键")+str);
  24. }
  25. else if(e->button()==Qt::RightButton)
  26. {
  27. statusBar()->showMessage(tr("右键")+str);
  28. }
  29. else if(e->button()==Qt::MidButton)
  30. {
  31. statusBar()->showMessage(tr("中键")+str);
  32. }
  33. }
  34. void MouseEvent::mouseMoveEvent(QMouseEvent *e)
  35. {
  36. MousePosLabel->setText("("+QString::number(e->x())+","+QString::number(e->y())+")");
  37. }
  38. void MouseEvent::mouseReleaseEvent(QMouseEvent *e)
  39. {
  40. QString str="("+QString::number(e->x())+","+QString::number(e->y()) +")";
  41. statusBar()->showMessage(tr("释放在:")+str,3000);
  42. }
  43. void MouseEvent::mouseDoubleClickEvent(QMouseEvent *e){}
  44. MouseEvent::~MouseEvent()
  45. {
  46. }

 

工程代码:https://gitee.com/DreamLife-Technology_DreamLife/MouseEvent

 

 

 

文章来源: dreamlife.blog.csdn.net,作者:DreamLife.,版权归原作者所有,如需转载,请联系作者。

原文链接:dreamlife.blog.csdn.net/article/details/79417705

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。