• 6732阅读
  • 7回复

如何在线程中操作UI ??? [复制链接]

上一主题 下一主题
离线bazzi2011
 

只看楼主 倒序阅读 楼主  发表于: 2014-09-12
我一个界面上有两个按钮“开始”和“结束”,初始“开始” 可用,“结束” 置灰。当我点击“开始” 后,“开始” 置灰, “结束” 可用;同理点击 “结束” , “结束” 再置灰, “开始” 恢复可用。

目前我的需求是,当我点 “开始” 后, “开始” 按钮立刻置灰,而 “结束” 按钮则希望在3秒后才可用;同样点 “结束” 时, “结束” 立刻置灰, “开始” 3秒后恢复可用。

我的想法是在按钮中先把自身置灰后,创建线程,在线程中sleep 3秒后把另一个按钮置为可用、最后结束线程。

但我发现似乎线程中不能使用UI操作控件,我查到的结果也是Qt不支持在子线程中操作UI。

那么我应该如何进行这个步骤呢?有没有可以解决的方法!求各位大侠指点!
离线dbzhang800

只看该作者 1楼 发表于: 2014-09-12
对付这种简单的逻辑,一个QTimer不就行了么?
离线kimtaikee

只看该作者 2楼 发表于: 2014-09-12
Qt不支持在线程中操作UI元素,会直接Crash。

离线reerayxia

只看该作者 3楼 发表于: 2014-09-12
当然是可以的,考虑用事件机制就行
离线uidab

只看该作者 4楼 发表于: 2014-09-12
建议QTimer吧!!!
有时候为了工作直接获得答案,而我却失去了思考的乐趣!


飘啊飘,何时能安居!
离线wangjiazhan

只看该作者 5楼 发表于: 2014-09-12
进程不能操作UI界面的,建议QTimer
离线roywillow

只看该作者 6楼 发表于: 2014-09-13
或者用信号槽
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线hhjtlee

只看该作者 7楼 发表于: 2014-09-18
use single and slot like delegate in c#
快速回复
限100 字节
 
上一个 下一个