QT实现对话框遮罩

本文介绍如何在QT中创建并使用对话框遮罩功能。通过maskwidget.h和maskwidget.cpp两个文件实现,当m_pDlgBonusForNewUser控件显示时,自动弹出遮罩效果,达到屏蔽背景交互的目的。
摘要由CSDN通过智能技术生成

maskwidget.h

#ifndef MASKWIDGET_H
#define MASKWIDGET_H
 
#include <QWidget>
 
class CMaskWidget : public QWidget
{
public:
	static CMaskWidget* GetInstance();
	static void UnInstance();
 
	//! 设置被遮盖的控件
	void SetMainWidget(QWidget *pWidgetMasked);
 
	/*
	 * \brief: 设置触发遮盖动作的控件名字
	 *
	 * \param[in]: lstWidgetNames 控件名字数组
	 */
	void SetDialogNames(const QStringList &lstWidgetNames);
 
	/*
	 * \brief: 设置透明度
	 *
	 * \param[in]: fOpacity 透明度 取值范围0-1 1: 完全透明; 0: 完全不透明
	 */
	void SetOpacity(float fOpacity);
 
protected:
	virtual void paintEvent(QPaintEvent *event) override;
	virtual void showEvent(QShowEvent* event) override;
	virtual bool eventFilter(QObject *obj, QEvent *event) override;
 
private:
	explicit CMaskWidget(QWidget* wgt = nullptr);
	~CMaskWidget();
 
private:
	static CMaskWidget* m_pMask;
	QWidget* m_pDlgToBeMasked = nullptr;
	QStringList m_lstNamesForDlgPrompt;
};
 
#endif // MASKWIDGET_H

maskwidget.cpp

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值