qt弹窗添加背景窗口层

一、 实现

    嵌入式qt界面中,出现弹窗时,背景需要置灰色透明,禁用弹窗之外的点击事件,增强界面美观性及合理
性,实现Mask界面类如下文。

maskwin.h文件:

#ifndef MASKWIN_H
#define MASKWIN_H

#include <QWidget>

class MaskWin : public QWidget
{
    Q_OBJECT
public:
    explicit MaskWin(QWidget *parent = 0);
    ~MaskWin(){}
    static MaskWin *GetInstance();

signals:

public slots:
private:
    static MaskWin *m_maskWin;

};

#endif // MASKWIN_H

maskwin.cpp文件:

#include "maskwin.h"

MaskWin* MaskWin::m_maskWin = NULL;

MaskWin* MaskWin::GetInstance()
{
    if(NULL == m_maskWin)
    {
        m_maskWin = new MaskWin();
    }
    return m_maskWin;
}

MaskWin::MaskWin(QWidget *parent) :
    QWidget(parent)
{
	//设置窗口属性
    setWindowFlags(Qt::Window|Qt::FramelessWindowHint |Qt::WindowSystemMenuHint|
   				   Qt::WindowMinimizeButtonHint|Qt::WindowMaximizeButtonHint);
    setWindowOpacity(0.3);	//界面透明度,越小越透明
    setStyleSheet("background-color:black");
    setFixedSize(800,600);	//嵌入式屏幕分辨率大小
    hide();
}

二、使用

    该界面使用单例模式,所以可以适用于任意交互、提示警告类弹窗界面背景。

使用步骤:

  1. 首先确定需要添加此背景的弹窗类,在该类的头文件中添加Mask界面类的头文件;
  2. 其次查看弹窗类是否包含showEvent函数,如果没有就在弹窗类下重写该函数,然后再在showEvent函数中加入:

MaskWin::GetInstance()->show();

在弹窗显示的时候会运行showEvent函数,然后调用Mask界面类显示灰色透明背景。

  1. 在closeEvent函数中加入:

    MaskWin::GetInstance()->hide();
    

    最好hideEvent函数也加上,如果这两个函数也不存在,同2一样重写。

示例代码:
在这里插入图片描述
在这里插入图片描述

对应效果

    左边为原来的弹窗界面,右边的为添加该Mask界面类做背景。

在这里插入图片描述
其他推荐内容:

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值