zoukankan      html  css  js  c++  java
  • 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事件了。

  • 相关阅读:
    《HTTP权威指南》之HTTP连接管理及对TCP性能的考虑
    TCP/ip
    java scoket http TCP udp
    java ==和equals区别
    Java 流
    android ViewPager,ViewFlipper,ViewFlow实现左右滑动
    java反射详解
    退出清理所有Activity方法
    Android UI 使用Merge,include和 ViewStub--优化(1)
    android resources使用总结
  • 原文地址:https://www.cnblogs.com/GengMingYan/p/15341590.html
Copyright © 2011-2022 走看看