qt控件自动隐藏工具

424 阅读1分钟

需求:在Qt开发的过程中,总会遇到一些鼠标悬停时控件显示,离开时隐藏的需求,先看下效果。

在这里插入图片描述
头文件

#ifndef WIDGETAUTOSHOW_H
#define WIDGETAUTOSHOW_H

#include <QObject>
#include <QWidget>

/**
 * @brief The WidgetAutoShow class
 * 实现窗口的自动显示隐藏功能
 */
class WidgetAutoShow : public QObject
{
    Q_OBJECT
public:
    explicit WidgetAutoShow(QWidget *parent );

signals:

protected:
    bool eventFilter(QObject *watched, QEvent *event);

private:
    QWidget *w;
    QWidget *wParent;
};

#endif // WIDGETAUTOSHOW_H

源文件

#include "widgetautoshow.h"

WidgetAutoShow::WidgetAutoShow(QWidget *parent) : QObject(parent)
{
    w = parent;
    wParent = (QWidget*)w->parent();
    wParent->setMouseTracking(true);
    wParent->installEventFilter(this);
}

bool WidgetAutoShow::eventFilter(QObject *watched, QEvent *event)
{
    if( watched==wParent ){
        if( event->type()==QEvent::Enter ){
            w->show();
            return true;
        }
        else if( event->type()==QEvent::Leave ){
            w->hide();
            return true;
        }
    }
    return QObject::eventFilter(watched, event);
}

使用方法:

new WidgetAutoShow( *QWidget );	//需要隐藏的控件

使用起来方便!!!
[资源下载]
有相关开发需求,可以csdn私信交流!