为了在QT UI界面的状态栏实时显示鼠标在Label中的位置,需要重写鼠标事件MouseMoveEvent()。 但是MouseMoveEvent为了不过多消耗资源,默认需要鼠标按下捕捉到。因此需要在构造函数中设置setMouseTracking(true),这样鼠标在不按下时移动也能捕捉到。

示例

环境:Win10-x64+VS2015+Qt5.9.7

首先创建一个Qt GUI Application,工程名为CMyLabel。

头文件

CMyLabel.h

#pragma once#include <QtWidgets/QMainWindow>
#include "ui_CMyLabel.h"#include <QLabel>
#include <QMouseEvent>
#include <QGridLayout>
#include <QDebug>#pragma execution_character_set("utf-8")class CMyLabel : public QMainWindow
{Q_OBJECTpublic:CMyLabel(QWidget *parent = Q_NULLPTR);private:Ui::CMyLabelClass ui;private:QLabel *m_statusLabel;QLabel *m_mousePosLabel;private slots:void receiveMessageSlot(QString str);
};#ifndef MYLABEL_H
#define MYLABEL_Hclass MyLabel : public QLabel
{Q_OBJECT
public:MyLabel(QWidget *parent = 0);~MyLabel();protected:void mousePressEvent(QMouseEvent * event);void mouseMoveEvent(QMouseEvent *e);void mouseReleaseEvent(QMouseEvent * event);
private:signals:void sendMessageSignal(QString str);
};#endif // CMYLABEL_H

源文件

CMyLabel.cpp

#include "CMyLabel.h"CMyLabel::CMyLabel(QWidget *parent): QMainWindow(parent)
{ui.setupUi(this);m_statusLabel = new QLabel;m_statusLabel->setText(tr("位置:"));m_statusLabel->setFixedWidth(50);m_mousePosLabel = new QLabel;m_mousePosLabel->setText(tr("(0,0)"));m_mousePosLabel->setFixedWidth(100);//在状态栏中加入显示控件statusBar()->addPermanentWidget(m_statusLabel);statusBar()->addPermanentWidget(m_mousePosLabel);MyLabel *m_myLabel1 = new MyLabel();MyLabel *m_myLabel2 = new MyLabel();m_myLabel1->setStyleSheet("background-color: rgb(250,250,0);");m_myLabel2->setStyleSheet("background-color: rgb(0,250,0);");QObject::connect(m_myLabel1, SIGNAL(sendMessageSignal(QString)), this, SLOT(receiveMessageSlot(QString)));QObject::connect(m_myLabel2, SIGNAL(sendMessageSignal(QString)), this, SLOT(receiveMessageSlot(QString)));QHBoxLayout *hlayout1 = new QHBoxLayout;hlayout1->addWidget(m_myLabel1);hlayout1->addWidget(m_myLabel2);QGridLayout *vlayout = new QGridLayout;vlayout->addLayout(hlayout1, 0, 0);QWidget *widget = new QWidget();this->setCentralWidget(widget);centralWidget()->setLayout(vlayout);this->setMouseTracking(true);centralWidget()->setMouseTracking(true);
}void CMyLabel::receiveMessageSlot(QString str)
{m_mousePosLabel->setText(str);
}MyLabel::MyLabel(QWidget *parent): QLabel(parent)
{this->setMouseTracking(true);
}void MyLabel::mouseMoveEvent(QMouseEvent *e)
{qDebug() << "(" + QString::number(e->x()) + "," + QString::number(e->y()) + ")";QString sendMsg = "(" + QString::number(e->x()) + "," + QString::number(e->y()) + ")";emit sendMessageSignal(sendMsg);
}void MyLabel::mousePressEvent(QMouseEvent * event)
{qDebug() << "event->pos()" << event->pos();
}void MyLabel::mouseReleaseEvent(QMouseEvent * event)
{qDebug() << "event->pos()"<< event->pos();
}MyLabel::~MyLabel()
{}

QT界面:重写鼠标事件/实时显示Label中鼠标位置相关推荐

  1. Qt/PyQt 重写mouseMoveEvent事件 实时监测鼠标移动

    bool mouseTracking 属性是窗口部件跟踪鼠标监控. 如果重写了mouseMoveEvent事件就需要使用setMouseTracking(true)才能实时监测鼠标,如果不加这句,就会 ...

  2. html中的鼠标事件怎么写,html5中的鼠标事件以及鼠标事件属性

    鼠标事件 先列出html5中鼠标常见的一系列事件: 事件名称 描述 onclick 当单击鼠标时运行脚本 ondblclick 当双击鼠标时运行脚本 ondrag 当拖动元素时运行脚本 ondrage ...

  3. c语言鼠标事件的详解,JS鼠标事件(非常详细)

    在 JavaScript 中,鼠标事件是 Web 开发中最常用的事件类型,鼠标事件类型详细说明如下表所示: 鼠标事件类型 事件类型 说明 click 单击鼠标左键时发生,如果右键也按下则不会发生.当用 ...

  4. 773-780---DOM事件高级(常用鼠标事件,案例:跟随鼠标的天使,常用的键盘事件,案例:模拟京东按键输入内容,案例:模拟京东快递单号查询)

    文章目录 事件高级 7 常用的鼠标事件 7.1常用的鼠标事件 7.2 鼠标事件对象 案例:跟随鼠标的天使 8 常用的键盘事件 8.1 常用的键盘事件 8.2 键盘事件对象 8.3 ASCII 表 案例 ...

  5. (八)webStorage使用实例——利用storage事件实时监视webStorage中的数据

    在HTML5中,可以通过window对象的storage事件进行监听并指定其事件处理函数的方法来定义当其在其他页面中修改sessionStorage或localStorage中的值时所要执行的处理,代 ...

  6. java鼠标js触发事件吗,JavaScript鼠标事件是什么?JavaScript鼠标事件详解

    js中是比较简单的语言,然而js的精髓就是js事件,这也是js当中最重要的部分,很多人对JavaScript鼠标事件是什么还不是很了解,下面我们对JavaScript鼠标事件进行详解. 一:在js中, ...

  7. QT界面设计添加BUTTON不显示

    在QT界面设计中常常出现button不显示的问题,此时只需要打开工程文件夹,找到里面的ui_xxx.h文件,备份好之后删除此文件,接着执行清理工程,执行qmake,rebuild工程的操作,就可以了!

  8. 9.7 top:实时显示系统中各个进程的资源占用状况

    top命令 用于实时地对系统处理器状态进行监控,它能够实时地显示系统中各个进程的资源占用状况.该命令可以按照CPU的使用.内存的使用和执行时间对系统任务进程进行排序显示,同时top命令还可以通过交互式 ...

  9. python鼠标事件_Python之pygame的鼠标事件

    鼠标 当显示模式设置后,事件队列就会开始收到鼠标事件.当按下和释放鼠标的按键时,会产生 pygame.MOUSEBUTTONDOWN和pygame.MOUSEBUTTONUP事件.这些事件包含一个bu ...

最新文章

  1. 开机后需要手动打开mysql_mysql解压版一键配置
  2. linux日志查看面试题,Linux 运维面试题 三剑客(sed awk grep)整理
  3. python翻译成matlab_matlab语言转译成python
  4. Gtest在vs 2010上的配置
  5. Java接口long类型精度丢失,解决前后端交互Long类型精度丢失问题
  6. “函数调用的左操作数”的理解
  7. 独家 | 2021双11背后的数据库硬核科技
  8. 17.立体匹配——更好的效果与挑战,总结_5
  9. linux tar 备份命令
  10. c语言 键盘输入结构体,C语言结构体问题
  11. SourceTree使用笔记 ssh-key配置
  12. Java、Java Web面试题(来源于MLDN、北方网)
  13. 微信小程序——全国城市列表
  14. 关系代数表达式优化步骤
  15. 缝隙天线简介[搬运]
  16. C语言 —— char类型的使用(二)
  17. 【译】 on the expressive power of deep architectures
  18. 遗传算法python与matlab_遗传算法之Python实现代码
  19. 数据分析与爬虫实战视频——学习笔记(二)(千图网图片爬虫、fiddler抓包分析、腾讯视频评论爬虫、多线程爬虫(糗百))
  20. ONF组织的SDN架构文档——四个架构(三/一)

热门文章

  1. 使用unity无脑制作贪吃蛇
  2. Bootstrap(四十六)
  3. MongoDB技术实践与应用案例征集中
  4. yjv是电缆还是电线_YJVR电缆是什么,它与YJV电缆有什么不同
  5. 获取微信小程序源码并进行反编译
  6. RTT之创建工程模板
  7. 序:为什么要选React
  8. 2021年度国产地图软件盘点:这款高赞互联网地图红了整整一年
  9. Tkinter 鼠标键盘事件
  10. 钢结构建筑软件:Advance Steel 2024 激活版