透明的QWebView在Mac OS X上

4

我正在尝试显示一个带有圆角的QWebView,因此我需要透明背景以隐藏原始的白色边角。我正在使用我在这里找到的“技巧”。

这对我不起作用,所以我添加了以下代码:

this->view.setAttribute(Qt::WA_TranslucentBackground);

现在它在Linux(Ubuntu)和Windows上运行得很好,但在Mac OS X上却无法正常显示,仅显示黑色角落。我尝试设置样式表如下:
this->view.setStyleSheet("background: transparent;");

或者

this->view.setStyleSheet("background-color: none");

或者

this->view.setStyleSheet("QWidget { background: transparent; }");

但是没有任何作用。有没有办法让它工作?我正在使用Qt 5.0.2。

2个回答

2
请查看此代码: https://github.com/pcmantinker/Tray-Notification-System/blob/master/traynotificationwidget.cpp 我曾经制作了一个项目,用于在兼容Qt的所有平台上显示系统托盘中的通知小部件。
关键是要使用父部件没有边框和背景色并具有子部件的嵌套结构。您可以使用QSS自定义子部件的显示效果。
这里是一些样例图像:
Windows 7
Windows 7
Mac OS X Lion
Mac OS X Lion
Ubuntu
Ubuntu
希望这有所帮助。如果您有任何问题,请告诉我。

这正是我想要的。我的意思是用HTML + Webkit制作“通知”。我会尝试实现你的代码并告诉你结果。 - stepanbujnak
1
我希望这段代码能够适应你的需求。理论上,如果你让子小部件具有透明背景,这种技术应该可以奏效。 - Cameron Tinker
尝试了你的代码,但在Mac OS X上也没有起作用。也许是因为我试图使QWebView透明,谁知道呢。 - stepanbujnak

0

我最终通过将Qt从5.0.2升级到5.1.0来解决问题。这不是最优解,但似乎从4.x5.0.x存在许多退化。


1
很高兴你能让它正常工作。我还没有将我的项目升级到Qt 5.x.x。稍后我会尝试看看我的托盘通知小部件是否在Qt 5.x.x中工作。 - Cameron Tinker

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接