为QWidget添加阴影效果

阅读数:118 评论数:0

跳转到新版页面

分类

C/C++

正文

在 Qt 中,阴影效果可以通过使用 Qt 的图形效果框架来实现,特别是 QGraphicsDropShadowEffect 类。这个类提供了一种在任何 QWidget 或其子类上创建阴影效果的简单方法。

box-shadow的基本语法如下:

box-shadow: [horizontal offset] [vertical offset] [blur radius] [spread radius] [color] [inset];
  • horizontal offset: 阴影的水平偏移量。正值阴影向右偏移,负值向左偏移。
  • vertical offset: 阴影的垂直偏移量。正值阴影向下偏移,负值向上偏移。
  • blur radius (可选): 阴影的模糊半径。值越大,阴影边缘越模糊。如果没有设置这个值,阴影的边缘将是硬边缘。
  • spread radius (可选): 阴影的扩展半径。正值会使阴影面积变大,负值会使阴影面积缩小。
  • color (可选): 阴影的颜色。可以使用各种颜色格式,如名称、十六进制值、RGB、RGBA、HSL或HSLA。
  • inset (可选): 如果指定了inset关键字,阴影将在元素内部绘制,呈现出内凹的效果。

以下是如何给一个 QWidget 添加阴影效果的例子:

#include <QGraphicsDropShadowEffect>
#include <QWidget>

// 创建一个阴影效果
QGraphicsDropShadowEffect *shadowEffect = new QGraphicsDropShadowEffect();

// 设置阴影的偏移量
shadowEffect->setOffset(5, 5);

// 设置阴影的颜色和透明度
shadowEffect->setColor(QColor(0, 0, 0, 60)); // 黑色,60% 透明度

// 设置阴影的模糊半径
shadowEffect->setBlurRadius(10);

// 应用阴影效果到你的 widget 上
yourWidget->setGraphicsEffect(shadowEffect);
  • setOffset(qreal dx, qreal dy): 设置阴影的偏移量。dxdy 分别是水平和垂直方向上的偏移量。
  • setColor(const QColor &color): 设置阴影的颜色。可以使用 QColor 类来指定颜色和透明度。
  • setBlurRadius(qreal blurRadius): 设置模糊半径,用于控制阴影的模糊程度。

 




相关推荐

一、概述 QT是一个跨平台的C++库,主要用来开发图形界面(GUI)程序,它支持多种操作系统 ,如Windows、Linux、Android、ios、gnx、vxworks。 官网:https://w

一、预览 通过窗体-预览 或者 ctrl+R打开预览。 可以使用不同的内置风格、新式表、设备皮肤进行预览。在应用程序可以通过调用QApplication::setStyleSheet()来加载样式表实

代码编辑: Ctrl + Space: 激活代码补全 Ctrl + /: 注释/取消注释当前行或选定代码 Ctrl + I: 自动缩进选定代码 Ctrl + Shift + U: 转换选定文本为大写

在 Qt 中,输出变量值通常是用于调试目的,你可以使用多种方法来打印或显示变量的值。以下是一些常见的方法: 1、使用 qDebug: qDebug 是 Qt 中用于输出调试信息的宏。它可以将输出发送到

在 Qt 中全局加载一个 TTF 字体文件并使用它,你可以在程序初始化时期,比如在 main 函数中加载字体。以下是加载全局字体的步骤: 加载字体文件:使用 QFontDatabase::addAp

一、对于窗口 (QMainWindow, QDialog, 等): 1、move() 方法: 使用 move() 方法可以将窗口移动到屏幕上的指定位置。 QMainWindow *window = n

Qt框架中使用new关键字创建的对象通常需要手动释放,但是Qt提供了一种父子关系机制,可以自动管理对象的内存。当你使用new创建一个对象并将其分配给一个父QObject时,这个对象将会在父对象被销毁时

在Qt中,border-radius 在样式表中不会对顶层窗口生效。顶层窗口是指没有父窗口的窗口,通常是您的应用程序的主窗口或者独立的弹出窗口。由于安全性和平台兼容性的原因,很多样式表中的属性在顶层窗

在Qt中,connect函数用于连接信号和槽。从Qt 5开始,你可以使用C++11的lambda表达式作为槽函数,这样可以使你的代码更加简洁,尤其是当你想要对信号进行一些简单的处理时,而不想去定义一个

1. 定义全局常量 全局常量可以在一个头文件中使用 const 关键字或 #define 预处理器来定义: // constants.h #ifndef CONSTANTS_H #define CO