QT设置右下角悬浮按钮

今天做了一个QT悬浮按钮的样式,有几个比较重要的点,记录一下
首先,要求是设置一个悬浮的按钮,当鼠标移动到该窗体时,按钮显示;鼠标移出该窗体时,按钮隐藏。最重要的点是,按钮不能破坏之前的界面布局。
思路其实也比较简单,之前也有做过焦点移到到按钮显示提示图片,移出按钮则提示消失的问题,大致思路是一致的,主要方法是采取位置的偏移以达到显示的效果。具体代码如下:


mianwidget.cpp

TestWidget::TestWidget(QWidget * parent)
{
     QVBoxlayout *pLayOut = new QVBoxlayout(this);
     m_topWidget = new TopWidget(this);//上半部控件
     m_bottomWidget = new BottomWidget(this);//下半部控件
     pLayOut->addLayout(m_topWidget);
     pLayOut->addLayout(m_bottomWidget);
     m_pushbtn = new  PushButton(this);//悬浮按钮
     m_pushbtn->setFixSize(40,30);
     m_pushbtn->hide();
 }
TestWidget::enterEvent(QEvent *)//鼠标进入
{
     if(m_pushbtn)
     { 
         QPoint point = m_bottomWidget->pos();
         point->rx = point->x()+m_bottomWidget.Width()-40;//按钮右边缘与widget边缘相接
         point->ry = point->y()+m_bottomWidget.Height-30;//按钮下方与Widget边缘相接
         m_pushbtn->move(point);
             
     }
}
TestWidget::leaveEvent(QEvent *)//鼠标移开
{
     if(m_pushbtn)
     { 
         m_pushbtn->move(point);
     }
}

这里的偏移为了直观,放一个示意图
在这里插入图片描述

写文不易,且行且珍惜:)

  • 7
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值