qt - 如何在 Qt 中为无框窗口添加阴影

标签 qt window shadow borderless

我正在尝试创建一个下方有阴影的无框窗口。当我们使用 Qt::FramelessWindowHint 标志创建无边框窗口时,它不包含阴影。 但是我们可以通过创建 QGraphicsDropShadowEffect 对象,然后通过 setGraphicsEffect 函数将其传递给窗口小部件,轻松地将阴影添加到子窗口小部件中。但这似乎不适用于 QMainWindow。请帮我在 Qt 中为无框窗口添加阴影...

最佳答案

您可以使用这个简单的技巧来做到这一点:

<小时/>

将“QWidget”(例如小部件)添加到主窗口,并将主窗口上的所有内容移动到小部件。然后执行以下操作:

setAttribute(Qt::WA_TranslucentBackground); //enable MainWindow to be transparent

QGraphicsDropShadowEffect* effect = new QGraphicsDropShadowEffect();
effect->setBlurRadius(5);
ui->widget->setGraphicsEffect(effect);

这似乎对我有用。请参阅:

illusion of a main window having a shadow

关于qt - 如何在 Qt 中为无框窗口添加阴影,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12347776/

相关文章:

c++ - Qt:在QNetworkAccessManager中发送请求后连接信号

c++ - Qt 中的 "Using OS scope before setting MAKEFILE_GENERATOR"

qt - Qt Creator 中的开发控制台编码错误

java - Stage 的监听器最小化、最大化等

objective-c - 不能给 View 添加阴影,CALayer

linux - 如何从命令行传递 QMAKE 变量?

window.open后的Javascript调用函数

window - 如何在窗口外单击鼠标关闭 Vaadin 子窗口?

swift - Collection View 单元格上的重叠阴影

jquery - PNG 透明度问题 - 带有黑色阴影的褪色图像 - IE 中的边框