当前位置: 首页 > news >正文

VS2022+QT6.7 窗口置灰(遮罩)

 本文章使用QWidget来使窗口置灰,使用按钮控制置灰功能的开启和关闭,同时被置灰的控件自动禁用交互功能。

    connect(ui.pushButton_open, &QPushButton::clicked, this, [=]() {    //创建无边框窗口,大小是父的大小QWidget* parentWidget = new QWidget(this, Qt::FramelessWindowHint);parentWidget->resize(this->size());parentWidget->setObjectName("widget");//设置蒙版背景色,其中140为蒙版透明度parentWidget->setStyleSheet("#widget {background-color:rgba(192, 192, 192, 140);}");//将groupBox添加到layout中。这样,groupBox就会被布局管理器管理,自动调整大小和位置QGroupBox* groupBox = ui.groupBox;QVBoxLayout* layout = new QVBoxLayout(parentWidget);layout->addWidget(groupBox);//设置groupBox背景色,跟蒙版颜色区分groupBox->setStyleSheet("QGroupBox { background-color: rgb(255, 255, 255); }");groupBox->setParent(this); //将groupBox设置为父窗口groupBox->raise();                  //将groupBox设置为顶层parentWidget->stackUnder(groupBox); //将parentWidget设置为groupBox的下层parentWidget->show();               //显示parentWidgetgroupBox->show();                   //显示groupBoxui.textEdit->append("已置灰,自动禁用交互功能!");});

 以下功能是关闭置灰,不会删除parentWidget对象

	connect(ui.pushButton__close, &QPushButton::clicked, this, [=]() {parentWidget->close();ui.textEdit->append("关闭置灰!");});

头文件如下:包含<QGroupBox>, <QVBoxLayout>头文件,定义parentWidget、groupBox、layout对象

#pragma once#include <QtWidgets/QMainWindow>
#include "ui_QtWidgetsApplication1.h"
#include <QGroupBox>
#include <QVBoxLayout>class QtWidgetsApplication1 : public QMainWindow
{Q_OBJECTpublic:QtWidgetsApplication1(QWidget *parent = nullptr);~QtWidgetsApplication1();QWidget* parentWidget;QGroupBox* groupBox;QVBoxLayout* layout;
private:Ui::QtWidgetsApplication1Class ui;
};

  UI界面如下:0ef7295433504189a4463ad9a012c98d.png

效果如下:

9f100d80414e40b1bd827a0b3724a5ff.png

开启置灰

 

9646a85128184997829713994ca9d6da.png

关闭置灰

 

http://www.lryc.cn/news/510520.html

相关文章:

  • 如何通过HTTP API插入或更新Doc
  • C++ STM32 F4xx USART LL库 DMA + IDLE ISR 驱动裸机 +FreeRTOS 任务通知
  • RK3588在Android13/14如何查看GPU,NPU,DDR,RGA数据
  • sentinel学习笔记6-限流降级(上)
  • 【Rust自学】6.4. 简单的控制流-if let
  • 【HarmonyOS】鸿蒙将资源文件夹Resource-RawFile下的文件存放到沙箱目录下
  • Vue项目中env文件的作用和配置
  • 在 Vue3 项目中实现计时器组件的使用(Vite+Vue3+Node+npm+Element-plus,附测试代码)
  • 机器人C++开源库The Robotics Library (RL)使用手册(三)
  • Photoshop启动错误:找不到MSVCP140.dll的多步骤解决指南
  • mac中idea菜单工具栏没有git图标了
  • 学习threejs,PerspectiveCamera透视相机和OrthographicCamera正交相机对比
  • C#数学相关开发性能优化方法
  • 【前沿 热点 顶会】AAAI 2025中与目标检测有关的论文
  • APP投放的归因框架设计
  • 职业生涯记录-1
  • 江苏捷科云:可视化平台助力制造企业智能化管理
  • 【ES6复习笔记】Promise对象详解(12)
  • 01 Oracle 基本操作
  • C语言基础:指针(数组指针与指针数组)
  • 本地部署 LLaMA-Factory
  • Web前端基础知识(三)
  • 数据库设计问题记录
  • mac_录屏
  • 【Java-tesseract】OCR图片文本识别
  • redis cluster集群
  • 解锁高效密码:适当休息,让学习状态满格
  • 代码随想录算法训练营第十一天-150.逆波兰表达式求值
  • C++ 泛编程 —— 嵌套使用模板类
  • 【WebGIS】Cesium:GLTF数据加载