需求:在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私信交流!