关于设置QWidget的setAttribute(Qt::WA_NoSystemBackground)或setUpdatesEnabled(false)的问题

小蚊子 2011-08-19 04:40:18
本人在设置QWidget的setAttribute(Qt::WA_NoSystemBackground)或setUpdatesEnabled(false)后,当QWidget随着窗口大小变化而变化的时候,其黑色背景不能跟随窗口大小而变化(慢慢拖动是可以的,要是速度快点就不行了)。设置setUpdatesEnabled(false)主要是为了在窗口上用SDL播放视频时防止闪烁的。请问有遇到此类情况的兄弟指导指导。万分感谢!!!
...全文
4297 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
小蚊子 2011-08-29
  • 打赏
  • 举报
回复
论坛里就没有人玩QT+SDL实现视频播放的吗?顺便问问,有没有人仔细研究过VLC源码的,里面应该有用到使用QT+SDL的吧???!
小蚊子 2011-08-22
  • 打赏
  • 举报
回复
就只有Paint和Resize两个事件,屏蔽掉还是没有效果,视频同样要闪烁的。
乔巴好萌 2011-08-22
  • 打赏
  • 举报
回复
你都disable update了 界面都不刷新了 当然没问题了 但你这样是无法重绘的
就是说我感觉你这种方法 无法彻底解决闪烁的问题 当然你可以试试 可能不同的平台有不同的反应
你eventfilter试试 打下log 看都触发了哪些事件 然后试试 屏蔽掉
小蚊子 2011-08-22
  • 打赏
  • 举报
回复
楼上说的方法我试过了,好像效果不怎么样。请问你说的“用eventFilter过滤掉闪烁时的事件 ”具体是哪些事件???我现在是通过调用widget的setUpdatesEnabled(false)可以解决闪烁的问题,但是当不播放视频的时候,拖动窗口大小变化的时候,导致视频播放widget的黑色背景不能随着widget大小而改变,我调试跟了,widget的大小是改变的,就是它的黑色背景无法跟着变化。
乔巴好萌 2011-08-19
  • 打赏
  • 举报
回复
setAttribute(Qt::WA_PaintOnScreen);
这个是针对要显示的widget的窗口进行设置
乔巴好萌 2011-08-19
  • 打赏
  • 举报
回复
你那个问题还没搞定吗
setAttribute(Qt::WA_PaintOnScreen); 这个关掉双缓存
再用eventFilter过滤掉闪烁时的事件
event->ignore()即可

16,216

社区成员

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

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