QT+SDL 闪烁问题

本文讨论了在使用Qt和SDL播放视频时遇到的闪烁问题。设置了setAttribute(Qt::WA_NoSystemBackground)或setUpdatesEnabled(false),但发现QWidget的背景无法随窗口大小变化。尝试了多种解决方案仍未完全解决问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


来源:http://www.zzzyk.com/show/0b36843ce6d10955.htm


关于设置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的吧???!


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值