qt android 悬浮窗,Qt悬浮窗实现

本文详细介绍了如何使用Qt通过鼠标事件和事件过滤器来创建一个响应鼠标进入和离开的浮动窗口。作者分享了自定义全局变量和使用`eventFilter`函数来监控鼠标行为,以实现在鼠标移动时窗口的显示与隐藏。

Qt悬浮窗实现

曾经尝试用鼠标事件’ void mousePressEvent(QMouseEvent *event);'实现,但是鼠标离开控件的行为比较难监控

下面的方法比较简单

67dc1e1aaf3607fba73dd058ce1fcaf7.png

用事件过滤器实现

进入控件时自动浮现

离开控件时自动关闭

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

bool RecentDataItem::eventFilter(QObject *watched, QEvent *event)

{

qDebug()<<__pretty_function__>

if(this == watched ) {

if(QEvent::Enter == event->type()) {

//鼠标进入

if(infodialog_float==nullptr){

infodialog_float=new InfoDialog();//一个自定义全局变量相当于QWidget

QPoint point = QCursor::pos();

point.rx() = point.x() + 100 ;

point.ry() = point.y() ;

infodialog_float->move(point);

infodialog_float->SetInfo(dataentry_in);

infodialog_float->setWindowFlags(Qt::FramelessWindowHint);

infodialog_float->raise();

infodialog_float->show();

return true;

}

}

else if (QEvent::Leave == event->type()) {

//鼠标离开

if(infodialog_float!=nullptr){

delete infodialog_float;

infodialog_float=nullptr;

return true;

}

}

}

return QWidget::eventFilter(watched, event);

}

安装时间过滤器

this->setMouseTracking(true);

this->installEventFilter(this);

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值