QT+SDL 闪烁问题

时间:2025-01-24 11:33:20


来源:/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的吧???!