Qt——置灰窗口

ops/2025/1/12 21:01:12/

        在Qt中,你可以使用`QGraphicsEffect`来将一个窗口置灰化。同时,你可以通过设置`QGraphicsEffect`来禁用整个窗口上的所有交互。下面是一个简单的示例代码,演示如何在Qt中将一个窗口置灰并禁用交互:

#include <QtWidgets>int main(int argc, char *argv[])
{QApplication app(argc, argv);// 创建一个窗口QWidget window;window.resize(400, 300);window.setWindowTitle("Grayed Out Window");// 创建一个标签QLabel label("这是一个示例窗口。");label.setAlignment(Qt::AlignCenter);// 布局QVBoxLayout layout(&window);layout.addWidget(&label);window.setLayout(&layout);// 创建一个灰度效果QGraphicsOpacityEffect *effect = new QGraphicsOpacityEffect;effect->setOpacity(0.5); // 设置透明度,0为完全透明,1为完全不透明// 将效果应用到窗口上window.setGraphicsEffect(effect);// 禁用窗口上的交互window.setDisabled(true);window.show();return app.exec();
}

        在这个示例中,我们创建了一个简单的Qt窗口,将一个`QLabel`放在窗口中心,并使用`QGraphicsOpacityEffect`将窗口置灰。然后,通过`setDisabled(true)`方法禁用窗口上的所有交互。这样,整个窗口及其子窗口都将被置灰且不可点击。

        如果要取消窗口置灰和恢复窗口的交互,你可以简单地将`QGraphicsEffect`从窗口上移除,并使用`setDisabled(false)`来启用窗口上的交互。下面是一个示例代码,演示如何取消窗口的置灰效果并恢复交互:

#include <QtWidgets>int main(int argc, char *argv[])
{QApplication app(argc, argv);// 创建一个窗口QWidget window;window.resize(400, 300);window.setWindowTitle("Grayed Out Window");// 创建一个标签QLabel label("这是一个示例窗口。");label.setAlignment(Qt::AlignCenter);// 布局QVBoxLayout layout(&window);layout.addWidget(&label);window.setLayout(&layout);// 创建一个灰度效果QGraphicsOpacityEffect *effect = new QGraphicsOpacityEffect;effect->setOpacity(0.5); // 设置透明度,0为完全透明,1为完全不透明// 将效果应用到窗口上window.setGraphicsEffect(effect);// 禁用窗口上的交互window.setDisabled(true);window.show();// 模拟取消置灰和恢复交互QTimer::singleShot(3000, [&]() {// 移除灰度效果window.setGraphicsEffect(nullptr);// 启用窗口上的交互window.setDisabled(false);});return app.exec();
}

        在这个示例中,我们使用`QTimer::singleShot`模拟了一段时间后取消窗口的置灰效果并恢复窗口的交互。在定时器触发后,我们通过将`QGraphicsEffect`设置为`nullptr`来移除灰度效果,并使用`setDisabled(false)`方法启用窗口上的交互。这样,窗口将恢复正常状态,用户可以再次与窗口进行交互


http://www.ppmy.cn/ops/20590.html

相关文章

灯塔:MySQL笔记 (1)

数据库相关概念 名称全称简称数据库存储数据的仓库&#xff0c;数据有组织的进行存储DateBase(DB)数据库管理系统操控和管理数据据库的大型软件DateBase Management System (DBSM)SQL操作关系型数据库的编程语言&#xff0c;定义了一套操作关系型数据库——标准Structured Que…

大载重无人机的技术特点

你知道吗&#xff1f;大载重无人机正在改变我们的世界&#xff01; 想象一下&#xff0c;一架无人机可以轻松吊起几吨重的货物&#xff0c;飞跃山川湖海&#xff0c;将物品精准送达目的地。这是科技的力量&#xff0c;也是未来的趋势&#xff01; 这种无人机拥有先进的技术特…

C语言高效学习、提升方法

前言 已经用了十多年的C语言&#xff0c;回头看怎么学习、提升最快呢&#xff1f;个人觉得还是要从框架上去着手学习&#xff0c;用全局眼光去看、去学&#xff0c;主要是三部分&#xff1a;关键字及基本语法、重点功能点及标准库函数&#xff1b;只要把这三部分基本搞懂了&am…

web前端(简洁版)

0. 开发环境 && 安装插件 这里我使用的是vscode开发环境 Auto Rename Tag是语法自动补齐view-in-browser是快速在浏览器中打开live server实时网页刷新 1. HTML 文件基本结构 <html><head><title>第一个页面</title></head><body&g…

基于 SpringCloud 的在线交易平台乐优商城的设计与实现(六)

前面内容请移步 基于 SpringCloud 的在线交易平台乐优商城的设计与实现&#xff08;五&#xff09; 相关免费源码资源 乐优商城 第六章 系统测试 系统测试是整个项目开发生命周期的一个重要环节&#xff0c; 也是系统上线之前 必须要完成的步骤。测试的目的是对系统进行整…

【网络基础】深入理解UDP协议:从报文格式到应用本质

文章目录 前言Udp协议段格式1. 几乎所有协议首要解决的两个问题&#xff1a;a) 如何分离&#xff08;封装&#xff09;b) 如何进行向上交付 2. 理解报文本身3. 对Udp报文字段的解释4. Udp的特点如何理解 面向数据报&#xff1a; 5. IO类接口的本质&#xff1a;sento、recvfromU…

k8s-pod 控制器

文章目录 k8s-pod 控制器无状态服务与有状态服务无状态服务pod 控制器ReplicationController(RC)ReplicaSet(RS)Label 和 Selector Deployment创建滚动更新回滚版本扩容/缩容暂停和恢复 StatefulSet创建扩容/缩容更新RollingUpdate->金丝雀发布OnDelete 删除 DaemonSet节点选…

Kafka分区机制

Kafka分区机制是Kafka消息队列中的一个重要概念&#xff0c;用于将消息分散存储在多个物理节点上&#xff0c;从而实现高吞吐量和可伸缩性。 Kafka的主题&#xff08;Topic&#xff09;可以分为多个分区&#xff08;Partition&#xff09;&#xff0c;每个分区是一个有序的消息…