Qt 窗口强制禁用系统阴影(自定义菜单)

news/2024/11/8 10:38:22/文章来源:https://www.cnblogs.com/GengMingYan/p/18534489

解决方法

当只使用Qt::FramelessWindowHint时,不会显示系统阴影,因为自定义菜单一般都会添加Qt::Popup,添加Qt::Popup后系统会默认添加阴影效果。

在添加Qt::Popup后,继续添加Qt::NoDropShadowWindowHint枚举解决。

 

最小复现代码:

    QDialog *dia = new QDialog();dia->setWindowFlags(Qt::FramelessWindowHint|Qt::Popup);setAttribute(Qt::WA_TranslucentBackground);setAttribute(Qt::WA_StyledBackground);setAttribute(Qt::WA_DeleteOnClose);dia->setStyleSheet("background: white;");dia->show();

 

 发现窗口四周有阴影,当添加Qt::NoDropShadowWindowHint后解决:

    QDialog *dia = new QDialog();dia->setAttribute(Qt::WA_TranslucentBackground);dia->setAttribute(Qt::WA_StyledBackground);dia->setAttribute(Qt::WA_DeleteOnClose);dia->setWindowFlags(Qt::FramelessWindowHint|Qt::Popup|Qt::NoDropShadowWindowHint);QWidget *wid = new QWidget();wid->setStyleSheet("background: red;");QHBoxLayout *layout = new QHBoxLayout();layout->addWidget(wid);layout->setMargin(15);dia->setLayout(layout);dia->setGeometry(this->pos().x(), this->pos().y(), 100, 200);dia->show();

  

 

 

 

 

 

问题背景

 

Windows 默认情况下开启阴影,这就导致使用Qt做的一些透明背景自定义菜单显示不正常(例如椭圆角的菜单):

没设置系统阴影时显示正常:

 设置系统阴影后:

 主要原因是由于菜单四周是圆角,Windows窗口又不支持圆角,只能父窗口透明,子窗口圆角显示:

 

最终效果:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/828726.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CJ/T188 调试工具介绍

官网下载地址:CJ/T 188 主站模拟器 功能介绍 #可用于任何厂商生产的符合 CJ/T188 标准的电能表。 支持通过串口和 TCP 连接 CJ/T188 设备。 支持 CJ/T188-2004/2018 协议。 同时与多个水表通信。 快速读取与写入数据,以表格形式展示,包含数据标识描述。 完善且人性化的界面设…

OpenHarmony4.1蓝牙芯片如何适配?触觉智能RK3568主板SBC3568演示

当打开蓝牙后没有反应时,需要排查蓝牙节点是否对应、固件是否加载成功,本文介绍开源鸿蒙OpenHarmony4.1系统下适配蓝牙的方法,触觉智能SBC3568主板演示,搭载了瑞芯微RK3568芯片,应用可覆盖边缘计算、人工智能、工业HMI、工业网关、智慧医疗、自助终端、智能零售、能源电力…

信创化浪潮下的ARM镜像构建指南

前言:在当今科技蓬勃发展的浪潮中,有一股神秘的力量如同幕后的巨擘,强力推动着信创化的进程。这股力量恰似一只无形却力大无穷的巨手,其影响范围广泛,涵盖了从操作系统、形形色色的中间件、数据库,一直到容器平台等诸多领域。 伴随着技术架构的深刻变革,docker 镜像也迎…

export、import、default、as 命令的一个综合性案例

a.js // a.js let a = 1; let b = 2; let c = 3;// export { a, b, }// 方法一 // export default c;export { a,b,c as default}// 方法二,不可export2个default可以export 多次,b.js // b.js // import { a, b, default as c } from ./a.js // console.log(a,b,c);// 等价于…

开源分析和落地方案—Sentinel篇

作者:京东物流 刘达一、Sentinel是什么? Sentinel是从阿里技术体系内诞生并由相关社区从微服务到云原生阶段持续孵化的流量治理组件,在服务熔断限流以及秒级/分钟级监控方面提供了开箱即用的解决方案,此外作为支持云原生的重要探索,还提供了GO语言实现。Sentinel目前拥有着…

基于XAML框架和跨平台项目架构设计的深入技术分析

深入探讨基于XAML的各种平台、跨平台战略以及为有效的项目架构设计所需的核心技术XAML平台和跨平台开发策略 本文基于Vicky&James 2024年10月22日在韩国Microsoft总部BMW meetup会议上的演讲内容重新整理而成。这次研讨会我们深入探讨了基于XAML的各种平台、跨平台战略以及…

MCGS_MQTT_STD新建设备变量批次导入

在阿里云物联网添加新设备,我比如我这里添加DK0111先导出标准的连接变量,文件名为 MQTT_STD标准参数.csv触摸屏MQTT_STD配置。发布和订阅主题修改导出新建的设备的连接参数打开标准的连接参数和新建项目的连接参数(.CSV文件),并将标准的连接参数里面的变量名复制到新建项目…

echarts 的使用

官网地址 https://echarts.apache.org/handbook/zh/concepts/dataset 要配合打在echarts Api进行查看,api地址如下: https://echarts.apache.org/zh/option.html#title 使用步骤一:引入echarts 1、设置dom标签的宽度和高度 2、调用echarts.init方法初始化echarts注:在vue中获…

LeetCode 2535[数组元素和与数字和的绝对差值]

LeetCode 2535[数组元素和与数字和的绝对差值]题目 链接 LeetCode 2535[数组元素和与数字和的绝对差值] 详情实例提示题解 思路 遍历容器,依次求出数字和与元素和,然后求差值: 通过 getSun 函数,求取元素的数字和 getSun 函数的实现:将其对10取余操作,获取的余数即为当前…

DearPyGui学习

1.所有DPG应用程序必须做3件事: 创建和销毁上下文 (create_context) 创建和显示视区 (create_viewport、show_viewport) 设置和启动DearPyGui (start_dearpygui) #基本顺序 dpg.create_context() dpg.create_viewport() dpg.setup_dearpygui()dpg.show_viewport() dpg.start_d…

服务器是Ubuntu20.04,安装Colmap

就下这一个东西,遇到的错误简直数不清,在这吐槽一下!顺便,分享一个最终成功的教程!!(虽然可能是玄学~) 附上我跟着一步一步来最终下好的教程链接,亲测好用!!! https://blog.csdn.net/weixin_44172157/article/details/122203759 其实中途还是发现了一个错误!和之前…

Html5QRCode扫描条形码+二维码

代码:<html> <head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>…