一、 实现
嵌入式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();
}
二、使用
该界面使用单例模式,所以可以适用于任意交互、提示警告类弹窗界面背景。
使用步骤:
- 首先确定需要添加此背景的弹窗类,在该类的头文件中添加Mask界面类的头文件;
- 其次查看弹窗类是否包含showEvent函数,如果没有就在弹窗类下重写该函数,然后再在showEvent函数中加入:
MaskWin::GetInstance()->show();
在弹窗显示的时候会运行showEvent函数,然后调用Mask界面类显示灰色透明背景。
- 在closeEvent函数中加入:
MaskWin::GetInstance()->hide();
最好hideEvent函数也加上,如果这两个函数也不存在,同2一样重写。
示例代码:
对应效果
左边为原来的弹窗界面,右边的为添加该Mask界面类做背景。
其他推荐内容:
- qt电池控件设计:https://blog.csdn.net/weixin_42887343/article/details/113932145
- QWidget控件拖动:https://blog.csdn.net/weixin_42887343/article/details/114384324
- QWidget控件旋转方法:https://blog.csdn.net/weixin_42887343/article/details/115037420
- qt柱状图控件设计:https://blog.csdn.net/weixin_42887343/article/details/115124178
- qt淡化提示框设计:https://blog.csdn.net/weixin_42887343/article/details/109303972