我有一个自定义小部件来模拟气球提示.要正确显示,窗口小部件取决于QWidget属性Qt::WA_TranslucentBackground
.我的应用程序应该适用于所有主要平台(Windows XP,Windows 7,Linux,Mac),所以我担心一下:这个属性是否适用于所有主要平台?如果没有,我可以查询是否?testAttribute()
不这样做.它仅返回是否已设置属性,而不是设置它是否有效.
对于Linux,您应该检查是否启用了合成:
bool QX11Info::isCompositingManagerRunning() [static]
Run Code Online (Sandbox Code Playgroud)
例如
#ifdef Q_WS_X11
if(QX11Info::isCompositingManagerRunning())
setAttribute(Qt::WA_TranslucentBackground);
#endif
Run Code Online (Sandbox Code Playgroud)
这个问题很古老,但这可能对某人有所帮助.
当配置为不支持ARGB时,这应该与Linux over X11的唯一例外一起使用.请参阅QWidget文档:
创建半透明Windows
从Qt 4.5开始,就可以在支持合成的窗口系统上创建具有半透明区域的窗口.
要在顶级窗口小部件中启用此功能,请使用setAttribute()设置其Qt :: WA_TranslucentBackground属性,并确保在要部分透明的区域中使用非不透明颜色绘制其背景.
平台说明:
X11:此功能依赖于使用支持ARGB视觉效果的X服务器和合成窗口管理器.
Windows:窗口小部件需要设置Qt :: FramelessWindowHint窗口标志,以便半透明起作用.
考虑阅读标题为"透明度和双缓冲"的段落,可能会很有趣.
归档时间: |
|
查看次数: |
5711 次 |
最近记录: |