Qt之再谈阴影边框

利用Qt的QGraphicsDropShadowEffect实现无边框窗口阴影效果 实现原理: QWidget互相嵌套, 以一个窗口QWidget作为阴影的画板, 嵌套QWidget设置阴影 代码: 第一步:新建一个qt工程,选择QWidget作为主界面的基类 第二步, 先按照如图自己在ui界面添加一个widget, 并进行垂直布局, 布局器更名:lay_bg。详细步骤如下: 拖一个Widget到ui界面上,然后选择Widget,垂直布局: 这里的Layout改成lay_bg... 阅读详情

今天正好搞一下窗口的阴影,发现一篇文章写的真是不错..

毫不犹豫滴..转过来了..感谢作者分享.

转自:http://blog.sina.com.cn/s/blog_a6fb6cc90101eoop.html


前面就窗口阴影已经写过一篇博客,使用九宫格的思路实现的,在我看来,凡是用程序能实现的尽量不要使用图片代替(在保证效率的前提下),今天再次分享关于我的一些小见解!

      先看效果:

窗口阴影任意调节,包括阴影像素、是否圆角等。
      直接上代码:
void DropShadowWidget::paintEvent(QPaintEvent *event)
{
    QPainterPath path;
    path.setFillRule(Qt::WindingFill);
    path.addRect(10, 10, this->width()-20, this->height()-20);

    QPainter painter(this);
    painter.setRenderHint(QPainter::Antialiasing, true);
    painter.fillPath(path, QBrush(Qt::white));

    QColor color(0, 0, 0, 50);
    for(int i=0; i<10; i++)
    {
        QPainterPath path;
        path.setFillRule(Qt::WindingFill);
        path.addRect(10-i, 10-i, this->width()-(10-i)*2, this->height()-(10-i)*2);
        color.setAlpha(150 - qSqrt(i)*50);
        painter.setPen(color);
        painter.drawPath(path);
    }
}

 记得加上这行代码: setAttribute(Qt::WA_TranslucentBackground)。保证不被绘制上的部分透明,关于这行代码在一些Qt版本中会有副作用,比如:最小化后窗体子组件失去焦点等问题。具体可以看Qt的这个Bug( Widget with Qt::FramelessWindowHint and Qt::WA_TranslucentBackground stops painting after minimize/restore)。
      也许有人会遇到,因为我之前一直使用的是VS集成Qt5插件(非OpenGL版本),一直存在这个问题,寻找各方面资料无果(真的很久,搞不夸张的说大半年应该是有的)。最后改换OpenGL版本的居然好了。。。问题的解决方式太过于诡异,真让人哭笑不得。在此记过,希望对后来人有帮助。

    
    为子部件添加阴影比较简单,使用如下方式:
QGraphicsDropShadowEffect *shadow_effect = new QGraphicsDropShadowEffect(this);
shadow_effect->setOffset(-5, 5);
shadow_effect->setColor(Qt::gray);
shadow_effect->setBlurRadius(8);
network_group_box->setGraphicsEffect(shadow_effect);

效果如下:

qt窗口在windows系统下完美实现边框阴影 哈喽,好久不见!今天要分享的内容是qt编写的窗口在windows系统下如何完美实现窗口边框阴影。 qt虽然自带阴影类QGraphicsDropShadowEffect,但是它的原理是需要两层widget,上面一层显示窗口,下面一层作为阴影。但是,如果产品经理反复横跳,刚开始不要阴影,后来又提出需求了,怎么办?这时你的窗口布局什么的全都弄好了,又不好修改。如何做到想加就加,想不要就不要呢?请往下看。 我们这里是使用的windows api做的,所以做全平台的就不能帮助啦。 ... 阅读详情

相关推荐

QT无边框窗口

实现三个虚函数算法相关鼠标相对于左上角的 z 是不变的添加 QPoint 头文件因为作用域的原因,我们把 z 定义为类的成员变量。现在就可以正常的拖动窗口了。

HuanBianCheng27的博客 6341

QT 实现无边框可伸缩变换有阴影的QDialog弹窗

【代码】QT 实现无边框可伸缩变换有阴影的QDialog弹窗。

Ray 1320

Qt开发 | 无边框窗口 | 自定义标题栏 | 拖拽拉伸 | 窗口阴影 | 圆角窗口

QWidget是 Qt 框架中的一个核心类,它是所有控件和窗口的基类。QWidget提供了创建和管理 GUI 组件的基础功能。Qt所有的窗口、控件以及布局都是派生于QWidget。关键特性与功能窗口和控件的基类:几乎所有的 GUI 组件都是QWidget的子类,包括按钮、文本框、标签、窗口等。布局管理QWidget支持多种布局管理方式,如水平布局、垂直布局和网格布局,这些布局可以帮助开发者轻松地组织控件的位置和大小。事件处理QWidget可以接收和处理各种事件,如鼠标点击、键盘输入、窗口大小变化等。

zwcslj的博客 2348

qml窗口无边框带阴影

qml窗口无边框带阴影

u010822106的博客 1156

QT边框阴影效果

方法一: this->setAttribute(Qt::WA_TranslucentBackground); //边框阴影效果 QGraphicsDropShadowEffect* effect = new QGraphicsDropShadowEffect; effect->setBlurRadius(6); effect->setColor(Qt::blac

阳光柠檬_的技术笔记 9242

Qt设置边框阴影效果

widget.h #ifndef WIDGET_H #define WIDGET_H #include <QWidget> namespace Ui { class Widget; } class Widget : public QWidget { Q_OBJECT public: explicit Widget(QWidget *parent = 0...

希望能帮助大家,希望大家多多支持,你们的支持是我前进的动力。 1万+

QT 实现窗口四周阴影

网上好多写的不清楚。。。又搞了好长时间。这样应该最简单了。 一、效果图 二、思路 1.先将所有窗口控件拖到一个QFrame里,因为设置对象阴影其子控件也会生效,所以需要这一步,让其无法生效。(最关键) 2.设置窗口背景透明 setAttribute(Qt::WA_TranslucentBackground); 3.设置参数 QGraphicsDropShadowEffect *effect =...

guorong520的博客 1万+

Qt之使用QGraphicsDropShadowEffect添加窗口边框以及文字阴影效果

一、简述 QGraphicsDropShadowEffect继承自QGraphicsEffect,实现了一种阴影的图像效果。 我们在Qt助手中看到QGraphicsEffect派生了四个子类,分别实现不同的效果。 这里我们看到QGraphicsEffect的子类实现了四种不同的效果,我们可以针对需求选择不同的Effect。今天我们要说的是使用QGraphicsDropShadowEffect来给...

前行之路还需前行 1万+

Qt之使用QPainter自绘实现窗口阴影边框

一、简述 今天要说的是如何通过自绘的方式实现窗口的阴影边框,在之前的文章里Qt之使用QGraphicsDropShadowEffect添加窗口边框以及文字阴影效果 ,讲述到使用Qt的 QGraphicsDropShadowEffect类给窗口或者控件加阴影效果,在显示上效果也不错,但是使用上貌似会有一些问题,之前在项目中使用QGraphicsDropShadowEffect还挺多的,但是会遇到窗口...

前行之路还需前行 1万+

Python大数据舆情分析系统开发实战

舆情监测系统是大数据分析的重要应用场景,通过自然语言处理(NLP)技术解析社交媒体文本情感倾向。基于Python技术栈的解决方案整合了Scrapy爬虫框架进行数据采集,PySpark处理海量文本数据,结合SnowNLP和Jieba实现中文语义分析。系统采用微服务架构设计,包含数据采集层、处理层、存储层和应用层,通过情感分析优化和实时热点检测算法提升监测准确率。典型应用包括企业品牌监测、公共事件预警等场景,开发过程中需特别注意数据合规性和分布式集群的性能调优。

weixin_34408624的博客 387

ABAP 7.40+新语法实战:用VALUE和REDUCE五分钟搞定复杂内表统计

本文详细介绍了ABAP 7.40+新语法中的VALUE和REDUCE操作符,如何高效处理复杂内表统计任务。通过实战案例展示,这些新语法能将代码量减少70%以上,显著提升开发效率和可读性,特别适合大数据量下的销售数据分析、分组统计等场景。

weixin_27219587的博客 207

【Qt】Qt实现无边框窗口及阴影效果

Qt中实现无边框窗口需要自定义标题栏、窗口拖动和调整大小功能。以下是详细步骤和示例代码:

weixin_43510208的博客 1693

本地部署Llama 3中文版:Ollama量化配置与调优指南

大模型本地部署正在成为数据敏感场景下的主流选择。本地运行开源大模型,既能保护隐私又能降低调用成本,但中文能力往往成为瓶颈。以Llama 3为代表的开源模型,需借助中文微调与量化技术,才能在消费级显卡上流畅运行。量化通过压缩模型权重减小显存占用,配合Ollama等推理框架,可快速搭建私有中文AI服务。该方案适用于知识库问答、内容生成、离线助手等场景,并可通过OpenAI兼容接口无缝对接Dify等应用平台。本文从硬件选型、量化等级到Modelfile配置,系统梳理本地部署中文大模型的全链路实战方法与排错思路,帮

weixin_29035405的博客 82

Qt 创建圆角、无边框、有阴影、可拖动的窗口

程序窗口的边框,标题栏等是系统管理的,Qt 不能对其进行定制,为了实现定制的边框、标题栏、关闭按钮等,需要把系统默认的边框、标题栏去掉,然后使用 Widget 来模拟它们。这里介绍使用QSS + QGraphicsDropShadowEffect来创建圆角、无边框、有阴影、可拖动的窗口。 核心技术要点: 启用 QSS:setAttribute(Qt::WA_StyledBackgro...

小胖七少爷的博客 2154

高频电磁场仿真-主题064-伴随变量法与灵敏度分析

在电磁器件优化设计中,梯度信息对于指导优化方向至关重要。考虑一个典型的电磁优化问题: 其中 p=[p1,p2,...,pn]Tp = [p_1, p_2, ..., p_n]^Tp=[p1​,p2​,...,pn​]T 是设计参数向量(如几何尺寸、材料参数等)。传统有限差分法的困境:示例: 一个具有100个设计参数的天线优化问题伴随变量法(Adjoint Variable Method, AVM)通过引入伴随场,将梯度计算复杂度从 O(n)O(n)O(n) 降低到 O(1)O(1)O(1):伴随变量法在计算

kkchenjj的博客 411

2023华为od机试C卷【最富裕的小家庭】C++ 实现

在一颗树中,每个节点代表一个家庭成员,节点的数字表示其个人的财富值,一个节点及其直接相连的子节点被定义为个小家庭。现给你一颗树,请计算出最富裕的小家庭的财富和。

MISAYAONE的博客 1239

Qt之阴影边框

阴影边框很常见,诸如360以及其他很多软件都有类似效果,了解CSS3的同学们应该都知道box-shadow,它就是来设定阴影效果的,那么Qt呢?看过一些资料,说是QSS是基于CSS2的,既然如此,box-shadow是基于CSS3的!那么Qt定然就用不了!     搜了一些资料,每张图片都做成阴影效果的固然不可能,直接舍弃(即使可以,也不采纳)。如果实时的去画图,效率太低,最后选择了拼图

信笔涂鸦 1557

汽车电子RTOS--AUTOSAR OS

AUTOSAR OS(AUTomotive Open System ARchitecture Operating System)是AUTOSAR(汽车开放系统架构)标准中的一个重要组件,它是一个专门为汽车电子控制单元(ECU)设计的实时操作系统(RTOS)。AUTOSAR OS旨在提供一个标准化的软件平台,以促进不同供应商和汽车制造商之间的组件复用和协同开发,提高软件质量和降低成本。

MHD0815的博客 1798

【QT入门】 无边框窗口设计之实现窗口阴影

【QT入门】 无边框窗口设计之实现窗口阴影

LF__plus的博客 1773

Yandex复杂还原验证码识别

本文分析了Yandex滑动验证码的识别方法,指出其通过JS判断正确滑动位置而非用户交互还原图像。核心思路是通过像素差异分析,将验证码图像重组后(分为3×3或4×4),计算相邻图像间的像素差异,最小值即为正确位置。与前期某象验证码识别方法类似,需结合图像增强技术统一像素直方图。文章强调该方法仅供学习参考,严禁用于违法行为。完整识别流程包括图像重组、像素差异计算等步骤,最终可准确定位正确拼图位置。

码王吴彦祖的博客 285

【电动汽车再生制动控制技术(万字长文,图文并茂)】

电动汽车再生制动的基本原理是:通过具有可逆作用的电动机/发电机来实现电动汽车动能和电能的转化。在汽车减速或制动时,可逆电机以发电机形式工作,汽车行驶的动能带动发电机将汽车动能转化为电能并储存在储能器(蓄电池或超级电容器)中;在汽车起动或加速时,可逆电机以电动机形式工作,将储存在储能器中的电能转化为机械能给汽车。这对于改善汽车的能量利用效率,延长电动汽车的行驶距离是至关重要的。

优快云-新能源汽车研发测试专业博主 1578

qt自定义无边框、可拉伸、可拖拽移动、阴影窗体

无边框 实现qt无边框窗体,只需要设定窗口属性: self.setWindowFlag(QtCore.Qt.FramelessWindowHint) 去除系统标题栏的窗口只有主体容器,没有边框阴影。没有突出层次感,而且没有明显边界,如下图。 边框阴影 给窗体添加阴影采用的方案是使用嵌套容器显示阴影。 即使用最顶层的QDialog作为阴影显示的容器,在窗体中新增子容器作为窗体,用于装载页面内容。 红色的是QDialog 用于显示白色widget的阴影,只需要设置其背景为透明,同时给widget添加阴影那

黄大胆的博客 3761

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

上一篇: 关于QListWidget的Drag和Drop用法
下一篇: 使用Boost实现Http断点续传
robertkun
博客等级 码龄19年 252粉丝 186原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值