Qt遮罩层窗体怎么实现
发表于:2025-02-03 作者:千家信息网编辑
千家信息网最后更新 2025年02月03日,本篇内容主要讲解"Qt遮罩层窗体怎么实现",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Qt遮罩层窗体怎么实现"吧!一、前言在有些项目中,需要在弹框的窗体背
千家信息网最后更新 2025年02月03日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安全错误
数据库的锁怎样保障安全
2012年网络安全员韩荣锋
交行软件开发中心笔试
软件开发技术设计文档
移动服务器端口
wlan覆盖网络安全
关于网络安全的手抄报简单 易画
上位机终端与服务器的联机
网络安全教育收获心得
西城区数据网络技术哪家好
服务器 区别
数据库自增默认
网络安全和信息化杂志预订
数据库字段命名有哪些
淄博食品软件开发咨询
计算机网络技术基础考题
闲鱼软件开发项目
温州中遣互联网络科技
天津品质软件开发价格
mssql数据库试用
路由器的首选DNS服务器地址
交行软件开发中心笔试
网络安全保卫支队图片
黄浦区新型网络技术有哪些
数据库技术及应用第4版答案
网络安全第一课教案
调研居民网络安全意识
网络安全诈骗观后感500字
公司进销存软件开发
数据库id自增之后导入失败
关系型数据库每一行称为