Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ QGraphicsDropShadowEffect的替代方案,用于无框窗口阴影_C++_Qt - Fatal编程技术网

C++ QGraphicsDropShadowEffect的替代方案,用于无框窗口阴影

C++ QGraphicsDropShadowEffect的替代方案,用于无框窗口阴影,c++,qt,C++,Qt,像今天的许多软件应用程序一样,我希望我的程序有一个无框架窗口,仍然有阴影,以便更好地适应操作系统。第一步是将窗口标志设置为Qt::FramelessWindowHint,以删除框架。但更棘手的是在窗户外面增加阴影。我选择将QGraphicsDropShadowEffect添加到一个较小的基本小部件中,通过将属性Qt::WA_transparcentbackground设置为true,该小部件保存所有内容并使QMainWindow透明 这对我来说似乎是一个很好的解决方案,直到我添加了一个QSize

像今天的许多软件应用程序一样,我希望我的程序有一个无框架窗口,仍然有阴影,以便更好地适应操作系统。第一步是将窗口标志设置为
Qt::FramelessWindowHint
,以删除框架。但更棘手的是在窗户外面增加阴影。我选择将
QGraphicsDropShadowEffect
添加到一个较小的基本小部件中,通过将属性
Qt::WA_transparcentbackground
设置为true,该小部件保存所有内容并使
QMainWindow
透明

这对我来说似乎是一个很好的解决方案,直到我添加了一个
QSizeGrip
来调整窗口的大小。每次调整窗口大小时,都会调用绘制事件,并且需要重新计算
QGraphicsDropShadowEffect
。这将导致超级起伏的大小调整和巨大的性能冲击


除了
QGraphicsDropShadowEffect
之外,还有其他性能更好的解决方案吗?

我提出了自己的解决方案,但目前还没有看到

最后,我制作了12幅png图像,当它们排列在一组布局中时,会产生阴影的错觉。我相信有很多方法可以做到这一点,但我所做的是把每一面分成3部分。这说明了设置放置阴影的许多不同方式(偏移和圆角)

这是一张夸张的图表:

红色区域是QLabel,带有与外角对齐的pixmap图标。紫色区域是带有重复背景图像的QLabel。红色区域的大小是固定的,但紫色区域可以通过最小/最大大小和布局拉伸自由扩展。顶部和底部边缘为水平布局,左侧和右侧边缘为垂直布局


这在我的用例中非常有效,解决了所有复杂的问题:)

请显示代码。我编辑了我的问题,希望能更好地遵循指导原则。