Qt遮罩层窗体怎么实现
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,本篇内容主要讲解"Qt遮罩层窗体怎么实现",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Qt遮罩层窗体怎么实现"吧!一、前言在有些项目中,需要在弹框的窗体背
千家信息网最后更新 2025年12月02日Qt遮罩层窗体怎么实现
本篇内容主要讲解"Qt遮罩层窗体怎么实现",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Qt遮罩层窗体怎么实现"吧!
一、前言
在有些项目中,需要在弹框的窗体背后遮罩原有主窗体,使得突出显示弹窗窗体,突然想到之前写过一个全局截屏的东东,原理一致,拿来改改。只需要引入一个头文件和实现文件,然后在主窗体中设置下需要遮罩的主窗体和可能弹窗窗体的类名即可,就是如此简单。可以支持多个窗体列表。 原理很简单,先安装事件过滤器,拦截QEvent::Show事件,拿到当前窗体,如果在需要遮罩的窗体列表中,则弹出半透明的窗体,大小和弹出的窗体大小一致,然后在激活当前弹出的窗体。
二、代码思路
//使用方法//第一步,设置需要遮罩的父窗体MaskWidget::Instance()->setMainWidget(this);//第二步,设置哪些弹窗窗体需要被遮罩QStringList dialogNames;dialogNames << "frm1" << "frm2";MaskWidget::Instance()->setDialogNames(dialogNames);//核心代码void MaskWidget::setDialogNames(const QStringList &dialogNames){ if (this->dialogNames != dialogNames) { this->dialogNames = dialogNames; }}void MaskWidget::setOpacity(double opacity){ this->setWindowOpacity(opacity);}void MaskWidget::setBgColor(const QColor &bgColor){ QPalette palette = this->palette(); palette.setBrush(QPalette::Background, bgColor); this->setPalette(palette);}void MaskWidget::showEvent(QShowEvent *){ if (mainWidget != 0) { this->setGeometry(mainWidget->geometry()); }}bool MaskWidget::eventFilter(QObject *obj, QEvent *event){ if (event->type() == QEvent::Show) { if (dialogNames.contains(obj->objectName())) { this->show(); this->activateWindow(); QWidget *w = (QWidget *)obj; w->activateWindow(); } } else if (event->type() == QEvent::Hide) { if (dialogNames.contains(obj->objectName())) { this->hide(); } } else if (event->type() == QEvent::WindowActivate) { //当主窗体激活时,同时激活遮罩层 if (mainWidget != 0) { if (obj->objectName() == mainWidget->objectName()) { if (this->isVisible()) { this->activateWindow(); } } } } return QObject::eventFilter(obj, event);}三、效果图
到此,相信大家对"Qt遮罩层窗体怎么实现"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
窗体
激活
一致
事件
代码
内容
原理
大小
文件
方法
学习
实用
更深
个头
使用方法
全局
兴趣
前言
同时
实用性
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
农信社不招软件开发岗吗
网络安全自评估报告
数据库复制增加数据
奥的斯机电公司的服务器怎么用
国产服务器品牌名称
南京通信网络技术应用
大话西游2选择合适的服务器
网络安全技术及应用第三版笔记
环卫局网络安全法工作方案
要怎么读取汽车数据库
_是对关系数据库的描述
硕士研究生网络安全专业课
网络安全管理会计基础
怀旧服部落服务器命令
国家网络安全法治日
安顺华为服务器总代理
影响通信网络技术方案的因素
数据库creat proc
网络技术88hack
开源传真服务器
天津市金盈软件开发有限公司
数据库同步安全么
北京软件开发人员生话状况
数据库迁移Oracle
服务器性能与配置要求
网络安全法 活动
服务器管理器里没有系统
路由器拨号显示服务器不响应
jsp需要web服务器吗
网络安全芯片