首页 > 其他分享 >MainWindow中监视鼠标移动事件

MainWindow中监视鼠标移动事件

时间:2024-09-08 20:36:34浏览次数:4  
标签:状态栏 QLabel mouseMoveEvent 监视 include MainWindow 鼠标

实现步骤:

  1. 重写 mouseMoveEvent 方法,在其中处理鼠标移动事件。
  2. 确保 MainWindow 捕捉到鼠标移动事件,这通常需要启用鼠标追踪(mouse tracking),因为默认情况下,鼠标移动事件只在按住鼠标按钮时触发。

示例代码:

#include <QApplication>
#include <QMainWindow>
#include <QMouseEvent>
#include <QStatusBar>
#include <QLabel>

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr) : QMainWindow(parent) {
        // 创建状态栏中的 QLabel
        mousePositionLabel = new QLabel(this);

        // 添加 QLabel 到状态栏
        statusBar()->addPermanentWidget(mousePositionLabel);

        // 启用鼠标追踪
        setMouseTracking(true);
        centralWidget()->setMouseTracking(true); // 确保中央部件也启用鼠标追踪
    }

protected:
    void mouseMoveEvent(QMouseEvent *event) override {
        // 获取鼠标的全局坐标或窗口内相对坐标
        QPoint mousePos = event->pos();  // 获取相对MainWindow的坐标

        // 更新状态栏中的文字
        mousePositionLabel->setText(QString("Mouse Position: (%1, %2)").arg(mousePos.x()).arg(mousePos.y()));

        // 调用基类方法以确保其他事件处理正常工作
        QMainWindow::mouseMoveEvent(event);
    }

private:
    QLabel *mousePositionLabel;
};

步骤解释

  1. 重写 mouseMoveEvent

    • MainWindow 中重写 mouseMoveEvent 方法,以捕捉鼠标移动事件。在这个方法中,你可以使用 event->pos() 获取鼠标在窗口中的位置。
  2. 启用鼠标追踪

    • 默认情况下,鼠标移动事件只有在按住鼠标按钮时才会触发。通过调用 setMouseTracking(true),你可以确保在不按住鼠标按钮的情况下,也能捕捉到鼠标移动事件。
  3. 更新状态栏

    • 在状态栏中的 QLabel 中显示当前鼠标的位置。这是一个简单的方式来实时显示鼠标坐标信息。

总结

通过重写 mouseMoveEvent 并启用鼠标追踪,可以在 MainWindow 中捕捉到每次鼠标移动事件,并进行处理。这对于需要实时响应鼠标位置的应用程序(例如绘图程序或需要鼠标交互的界面)非常有用。

标签:状态栏,QLabel,mouseMoveEvent,监视,include,MainWindow,鼠标
From: https://www.cnblogs.com/echohye/p/18403402

相关文章

  • Windows 11 登录后黑屏,只有一个可以移动的鼠标
    Windows11登录后黑屏,只有一个可以移动的鼠标,但是还能打开任务管理器,点击任务管理器顶部的“文件”>“运行新任务”按钮,按以下步骤操作:→输入:msconfig(按下Enter键)点击上面的“服务”勾选下面的“隐藏所有Microsoft服务”(请务必勾选)点击“全部禁用”。然后回到任务管......
  • 软件测试-RobotFramework-实战(清除、输入文本;鼠标点击;下拉框select、li;实战演示视频)
    学习笔记记录在用户信息界面,主要涉及头像上传,输入文本,选择按钮,下拉框选项。一、清除、输入文本 上传前一篇已经完成了,对于输入文本,主要就是一行代码inputtext输入框的地址要输入的文本但是如果输入框内还含有文本,就需要进行清除。\8--表示删除一个字符。 pre......
  • 解决Windows 远程登陆后vscdoe,chrome,cursor 等程序假死无法输入字符的问题(键盘没有
    作过程试着使用鼠标点击vscode左侧的文件列表,打开一个新的文件。如果鼠标没有反应,可以切换到其他软件(比如浏览器),再切换回来就能恢复鼠标的点击了。将鼠标移到vscode打开的文件的窗口,按住键盘s键(其他按键也行)不松开,然后用鼠标点击vscode打开的文件窗口;点击后切换到其他打开的软件(......
  • Windows10添加鼠标右键打开
    1打开注册表2.进入目录计算机\HKEY_CLASSES_ROOT\Directory\Background\shell\,新建项,2.1继续新建子项,重命名为command2.2修改子项中的默认,添加路径结果:ps:可以重命名。在第一个新建项中新建“字符串值”,重命名为“ICON”可以设置图标。效果图:......
  • Xencenter控制台操作通过MCS发布的虚拟机鼠标不同步问题处理
    问题描述在Xencenter控制台里面操作通过Machinecreationservices(Mcs)发布的虚拟机时会发现鼠标不同步,从而导致操作困难,如下图实际鼠标位置和虚拟机鼠标位置不同,问题分析在XenAppandXenDesktop7.0之后,为了提高服务器上通过MC发布的虚拟机密度,Xenserver上面分配给虚拟机的资源......
  • C# 获取当前鼠标位置
    在C#中,获取当前鼠标位置可以通过多种方式实现,但最常见和直接的方法之一是使用System.Windows.Forms命名空间中的Cursor类或者Control类的PointToClient(如果你正在处理WinForms应用程序)或Windows.UI.Core.CoreWindow的PointerPosition(如果你在处理UWP应用程序)。不过,对于大多......
  • 安装win7鼠标键盘不能动原因分析及解决办法
           有同学反馈安装win7鼠标键盘不能动这是怎么回事?后来研究该问题主要是原版win7没有集成usb3.0和usb3.1驱动导致,下面小编就教大家安装win7鼠标键盘不能动原因分析及解决方法。 安装win7鼠标键盘不能动原因分析:原因:研究后发现是英特尔Skylake这代芯片组(10......
  • 【Linux】阿里巴巴开源系统性能监视工具tsar:支持收集和报告系统的各种性能数据,包括CPU
    tsar是一个功能强大且用户友好的系统性能监视工具,广泛应用于开发者和系统管理员中。本文将带你从tsar的基础知识开始,逐步深入到中级和高级用法,帮助你全面掌握tsar的强大功能。......
  • 首次发一篇文章,0元领定制版大鼠标垫!(3步领取,7日到手)
    51CTO博客首发福利来啦!现在,首次发一篇文章,0元领定制版大鼠标垫!一、3步领取,7日到手发布文章——>等待审核(99%通过率)——>填邮寄信息①发布文章戳此直达>>②等待审核(99%通过率)发一篇不水文的原创技术文章必有奖。例如:刷题笔记、代码记录...技术分享。若审核不通过,可加下方小助手微信,......
  • 监视属性和深度监视
      深度监视:  正常写法与简写: ......