3

I was asking myself how I could obtain an iOS 7 like blur/transparency effect. Something like this:

Blur effect on iOS7
(source: ilounge.com)

I'd like to apply this to a whole QDialog. I know how to obtain a nice transparency, but not how to get this blur.

Can someone help?

Thanks a lot!

4

2 回答 2

5

基本上,您需要先获取桌面的屏幕截图。然后你需要模糊它。然后可能将图像保存到硬盘驱动器。然后您需要将其设置为对话框的背景。

然后您还需要使每个按钮的背景透明。

如果使用QGraphicsViewor OpenGL,最后三个步骤可能会有很大不同。

http://qt-project.org/doc/qt-5.0/qtgui/qscreen.html#grabWindow

http://qt-project.org/doc/qt-5.0/qtwidgets/desktop-screenshot.html

它实际抓取屏幕的代码行:

QScreen *screen = QGuiApplication::primaryScreen();
if (screen)
    originalPixmap = screen->grabWindow(0);

在 Qt 4.8 中,它曾经是这样完成的:

http://qt-project.org/doc/qt-5.0/qtgui/qpixmap.html#grabWindow

要模糊屏幕截图,请使用:

http://doc-snapshot.qt-project.org/4.8/qgraphicsblureffect.html

您可能需要将其保存到硬盘驱动器以便 QStylesheets 能够找到它。

要设置背景图像,请尝试以下操作:

http://qt-project.org/doc/qt-5.0/qtwidgets/stylesheet-reference.html#background-image-prop

如何设置样式表的示例:

qApp->setStyleSheet("QLineEdit { background-color: yellow }");

http://qt-project.org/doc/qt-4.8/stylesheet-examples.html

http://qt-project.org/forums/viewthread/1397

希望有帮助。

于 2013-11-10T04:22:44.683 回答
1

非常感谢您的帮助phyatt,我成功了。虽然我的代码有效,但结果不如 iOS 漂亮:

使用 Qt 实现类似 iOS7 的模糊

但是,我将在我的网站上发布整个代码,稍后我会在此处发布链接。

敬请关注!

[编辑] 这是详细操作方法的链接:iOS7 like blur effect with QT

于 2013-11-10T13:17:48.510 回答