Qt5.9的鼠标事件:进入QWidget界面事件、离开QWidget界面事件、摁住鼠标事件

原创

Qt5.9的鼠标事件:进入QWidget界面事件、离开QWidget界面事件、摁住鼠标事件

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/naibozhuan3744/article/details/82154241
            </div>
                                                <!--一个博主专栏付费入口-->
                      <!--一个博主专栏付费入口结束-->
        <link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_views-833878f763.css">
                                    <link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_views-833878f763.css">
            <div class="htmledit_views" id="content_views">
                                        <p>本文主要总结用Qt5.9实现常用鼠标事件,包括进入QWidget界面事件、离开QWidget界面事件、摁住鼠标事件。实现上面三个事件,只需要改写虚函数enterEvent(QEvent *),leaveEvent(QEvent *),mouseMoveEvent(QMouseEvent * event)就可以实现。</p>

下面是具体的实例步骤:

1.1新建一个widget工程,不要勾选ui界面。然后分别在widget.h,widget.cpp,main.cpp分别添加如下代码。

widget.h


 
 
  1. #ifndef WIDGET_H
  2. #define WIDGET_H
  3. #include <QWidget>
  4. #include <QPushButton>
  5. #include <QEvent>
  6. #include <QMouseEvent>
  7. class Widget : public QWidget
  8. {
  9. Q_OBJECT
  10. public:
  11. Widget(QWidget *parent = 0);
  12. ~Widget();
  13. protected:
  14. void enterEvent(QEvent *); //进入QWidget瞬间事件
  15. void leaveEvent(QEvent *); //离开QWidget瞬间事件
  16. void mouseMoveEvent(QMouseEvent * event); //摁住鼠标事件
  17. private:
  18. void setupUI();
  19. QPushButton *button;
  20. };
  21. #endif // WIDGET_H

 

widget.cpp


 
 
  1. #include "widget.h"
  2. #include <QVBoxLayout>
  3. #include <QDebug>
  4. Widget::Widget(QWidget *parent)
  5. : QWidget(parent)
  6. {
  7. //窗口UI界面初始化
  8. setupUI();
  9. }
  10. Widget::~Widget()
  11. {
  12. }
  13. void Widget::enterEvent(QEvent *)
  14. {
  15. if(button->geometry().contains( this->mapFromGlobal(QCursor::pos())))
  16. qDebug()<< "123";
  17. qDebug()<<tr( "鼠标进入主界面事件");
  18. }
  19. void Widget::leaveEvent(QEvent *)
  20. {
  21. qDebug()<<tr( "鼠标离开主界面事件");
  22. }
  23. void Widget::mouseMoveEvent(QMouseEvent * event)
  24. {
  25. qDebug()<<tr( "%1,%2").arg(event->pos().x()).arg(event->pos().y());
  26. }
  27. void Widget::setupUI()
  28. {
  29. button = new QPushButton( "button");
  30. QVBoxLayout *mainLayout = new QVBoxLayout();
  31. mainLayout->addWidget(button);
  32. mainLayout->addStretch();
  33. this->setLayout(mainLayout);
  34. }

 

main.cpp


 
 
  1. #include "widget.h"
  2. #include <QApplication>
  3. int main(int argc, char *argv[])
  4. {
  5. QApplication a(argc, argv);
  6. Widget w;
  7. w.resize( 960, 640);
  8. w.setWindowTitle(QString::fromUtf8( "鼠标事件:进入界面、离开界面、摁住鼠标"));
  9. w.show();
  10. return a.exec();
  11. }

 

1.2程序构建和运行后,结果如下图所示:

 

 

 

参考内容:

https://blog.csdn.net/u012997311/article/details/53027521(主要参考:enterEvent(),leaveEvent())

https://zhidao.baidu.com/question/367842714682272084.html(主要参考:mouseMoveEvent())

 

文章最后发布于: 2018-08-28 20:51:14
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值