qt QListWidget 添加鼠标移动事件(mouseMoveEvent),让父窗体可以监听到鼠标移动

Posted Ming

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了qt QListWidget 添加鼠标移动事件(mouseMoveEvent),让父窗体可以监听到鼠标移动相关的知识,希望对你有一定的参考价值。

默认QT的QListWidget不支持监听鼠标移动事件,需要新建一个子类,继承QListWidget, 当鼠标移动的时候,发送鼠标移动事件到父窗体:

子类头文件 listwidget.h:

#ifndef LISTWIDGET_H
#define LISTWIDGET_H

#include <QWidget>
#include <QListWidget>

class ListWidget : public QListWidget
{
    Q_OBJECT
public:
    explicit ListWidget(QWidget *parent = nullptr);


    virtual void mouseMoveEvent(QMouseEvent *event);

private:
    QWidget *parent = nullptr;

signals:



};

#endif // LISTWIDGET_H

子类实现文件listwidget.cpp:

#include "listwidget.h"
#include <QDebug>
#include <QApplication>
#include <QEvent>
#include <QMouseEvent>

ListWidget::ListWidget(QWidget *parent) : QListWidget(parent)
{
    this->parent = parent;
}

void ListWidget::mouseMoveEvent(QMouseEvent *event)
{
    qDebug() << "move...";
//   发送移动事件到父窗体
    QApplication::sendEvent(parent, event);
}

保证QListWidget和上层所有父窗口,开启了鼠标跟踪:

xxWidget->setMouseTracking(true);

 创建好类后,打开窗体设计,右键目标QListWidget控件 -> 提升 -> 提升类名称为ListWidget -> 提升:

 这样,父窗体的mouseMoveEvent就可以监听到QListWidget事件了。

以上是关于qt QListWidget 添加鼠标移动事件(mouseMoveEvent),让父窗体可以监听到鼠标移动的主要内容,如果未能解决你的问题,请参考以下文章

OpenGL - QT:鼠标移动事件效果未显示

事件过滤器未捕获 Qt 鼠标移动事件

如何为qlistwidget里的checkbox添加全选操作

Qt 隐藏标题栏 窗口移动 鼠标事件

即使拦截鼠标事件,Qt 窗口也会移动

QT学习之事件处理