qt中多线程与界面元素相互响应问题.

      参与开发 Thinkvd中的Effect,由于播放是开启了另一个线程(简称线程sdl)来实现的,发现在视频播放的pause状态下,切换视频效果,Effect窗口不响应,需要把Mouse放到effect窗口上才响应。测试方法:
1。若直接把Effect窗口放到线程sdl中repaint, 提示在多线中异常。
2。若线程sdl向Effect窗口连signal->slot则无响应。

这个问题是出在sdl上还是QT上目前难确定。
thinkvd dvd and video converter
查了一下资料,据说需要:
UI要跟app在同一线程~

解决办法:
在切换时,延时向Effect窗口发出需要刷新的消息.

void ImEffectWidget::changeEffectEvent(int etype, void *data)
{
 SDL_Event event;
 event.type = etype;
 event.user.data1 = data;
 if (event.type == TAB_CATALOG_WATERMARK) //skip if no item
 {
  if (m_ui.listWidgetWatermark->count() < 1)
   return;
  //else ok.
 }
 SDL_PushEvent( &event );
 int nStatus = m_treeItem->mdata("play_status").toInt();
 if (nStatus != TASK_STATUS_WORKING){
  QTimer::singleShot(20, m_ui.renderVideo2, SLOT(slotUpdateWindow()));  //延时刷新窗口。
 }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值