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事件了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM