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