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),让父窗体可以监听到鼠标移动的主要内容,如果未能解决你的问题,请参考以下文章