有不用Qt::WA_TranslucentBackground属性而使窗体背景透明的方法吗?

windywater 2011-11-03 09:14:28
用Qt::WA_TranslucentBackground可以使窗体透明,但似乎会带来一些副作用,比如最小化后还原对话框,子控件的焦点会出现问题,还有,vlc视频控件也无法在透明背景的窗体上正常播放。有没有不使用Qt::WA_TranslucentBackground,却也能达到背景透明而控件不透明的效果呢?
...全文
3404 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
NG魂 2014-03-09
  • 打赏
  • 举报
回复
我发现在win7中,使用win+d(显示桌面)可以使程序界面刷新,于是大胆尝试能使界面刷新的方法, 我做的是播放器,有一个双击videowidget全屏和还原的功能,我用鼠标双击两次回来就能看到界面, 于是在event中判断如果状态改变后不是最小化状态,就触发两次鼠标双击。 setFullscreen(1);setFullscreen(0);这两句执行后,全屏效果是看不到的,但是界面出来了~够蹩脚吧~
漂流石 2013-12-23
  • 打赏
  • 举报
回复
我也有类似问题,特别是弹出式窗口自绘显示视频: 1)Qt::WA_TranslucentBackground导致视频不显示; 2)用setMask替代方案,阴影边框不透明,存在灰底; 3)setStyle等方法全是黑底. 以上只有Qt::WA_TranslucentBackground能达到界面效果(alpha效果最佳),但是视频无法显示.
xiaonong1989 2013-10-21
  • 打赏
  • 举报
回复
加入这个代码可避免: bool MainWindow::event(QEvent *event) { if (event->type() == QEvent::WindowStateChange) { if (isMinimized ()) { // 处理Minimized鍵 setWindowFlags(Qt::FramelessWindowHint); //return true; } } return QMainWindow::event(event); }
huxinhua19 2013-09-16
  • 打赏
  • 举报
回复
早点看的你的帖子我就不会郁闷一上午了
lhongliangi 2013-04-28
  • 打赏
  • 举报
回复
同求蹩脚方法
gateslu 2012-08-17
  • 打赏
  • 举报
回复
楼主还会不会出现呢?希望能指点一下,我用directdraw显示视频,通过传入widget句柄,然后显示出来,但是当我设置setWindowFlags(Qt::FramelessWindowHint | Qt::WindowMinimizeButtonHint )
和setAttribute(Qt::WA_TranslucentBackground)之后,视频就无法显示了,求楼主蹩脚的方法~~~
「已注销」 2011-12-30
  • 打赏
  • 举报
回复
QPalette似乎不能解决我的问题,我还是保留了WA_TranslucentBackground属性,只是用了一些蹩脚的方法避免了出现的副作用。先结帖吧,有空看下qt源码再跟大家来交流。
qingqing_benniu 2011-12-02
  • 打赏
  • 举报
回复
QPalette pal = palette();
pal.setColor(QPalette::Background, QColor(0x00,0xff,0x00,0x00));
setPalette(pal);


我测试啦下 怎么是全黑的呢
「已注销」 2011-11-30
  • 打赏
  • 举报
回复
QPalette试了很多次还是没解决,不知道各位还有没有好的办法。
念茜 2011-11-21
  • 打赏
  • 举报
回复
我怎么没发现Qt::WA_TranslucentBackground有这个瑕疵?
zuoshouchiyan 2011-11-19
  • 打赏
  • 举报
回复
QColor(0x00,0xff,0x00,0x00));
最后一个参数是透明度,可以自己设置
「已注销」 2011-11-18
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 storylsl 的回复:]
C/C++ code
QPalette pal = palette();
pal.setColor(QPalette::Background, QColor(0x00,0xff,0x00,0x00));
setPalette(pal);

窗体透明控件不透明,写在窗体构造函数里,本人十分喜欢的一段代码,常用
[/Quote]
试了下,窗口变成纯白了,什么都看不到。
我是学友 2011-11-05
  • 打赏
  • 举报
回复 2
    QPalette pal = palette();
pal.setColor(QPalette::Background, QColor(0x00,0xff,0x00,0x00));
setPalette(pal);

窗体透明控件不透明,写在窗体构造函数里,本人十分喜欢的一段代码,常用
「已注销」 2011-11-04
  • 打赏
  • 举报
回复
没人理啊

21,489

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧