首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Qt::WA_TranslucentBackground随处可用?

Qt::WA_TranslucentBackground随处可用?
EN

Stack Overflow用户
提问于 2011-10-28 04:46:31
回答 2查看 6.6K关注 0票数 6

我有一个自定义的小部件来模拟气球提示。要正确显示小部件,小部件依赖于QWidget属性Qt::WA_TranslucentBackground。我的应用程序应该可以在所有主要平台(Windows XP、Windows 7、Linux、Mac)上运行,所以我有点担心:这个属性是否在所有主要平台上都可用?如果不是,我可以查询它是否是吗?testAttribute()不会这样做。只返回属性是否设置,不返回属性设置是否生效。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-10-28 06:03:31

当配置为不支持ARGB时,这应该适用于X11上的Linux的唯一例外。请参阅QWidget文档:

创建半透明窗口

从Qt4.5开始,可以在支持合成的窗口系统上创建具有半透明区域的窗口。

若要在顶级构件中启用此功能,请使用setAttribute()设置其Qt::WA_TranslucentBackground属性,并确保其背景在您希望部分透明的区域中使用非不透明颜色绘制。

平台说明:

X11:该特性依赖于支持ARGB可视化的X服务器和合成窗口管理器的使用。

窗口:小部件需要设置Qt::FramelessWindowHint窗口标志才能使半透明效果工作。

还可以考虑阅读标题为“透明度和双重缓冲”的段落,这可能会很有趣。

票数 7
EN

Stack Overflow用户

发布于 2011-12-28 23:46:36

对于Linux,您应该检查是否启用了合成:

代码语言:javascript
复制
bool QX11Info::isCompositingManagerRunning() [static]

例如:

代码语言:javascript
复制
#ifdef Q_WS_X11
    if(QX11Info::isCompositingManagerRunning())
        setAttribute(Qt::WA_TranslucentBackground);
#endif

这个问题很老了,但这可能会对某些人有所帮助。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7922177

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档