QT一个信号可以触发多个槽吗?

QT里面一个按钮信号可以触发两个槽吗,两个槽都是自己定义的。如果能实现,要怎么写呢?connect(b1,SIGNAL(clicked()),this,SLOT(SetD... QT里面一个按钮信号可以触发两个槽吗,两个槽都是自己定义的。如果能实现,要怎么写呢?
connect(b1,SIGNAL(clicked()),this,SLOT(SetDisabled()));
connect(b1,SIGNAL(clicked()),this,SLOT(Get()));
这样写吗?
我这样试了,结果一按按钮就卡死了!怎么解决呢?
展开
 我来答
starfar1983
2011-04-08 · TA获得超过2259个赞
知道小有建树答主
回答量:692
采纳率:0%
帮助的人:1045万
展开全部
可以连接任意多个槽。
如果卡死了,一定是别的原因导致的。别在connect函数上浪费时间了,去你的slot函数里找找问题。
追问
好像是没问题了。不过我现在有个疑问想问您。我的功能是这样的,这个按钮一按,我就把这个按钮设置不使能,然后开始读一个数30秒。设置按钮不使能主要是怕在这30s再按这个按钮会冲突。等30s数据读完了,在把按钮设置成使能。
可是无论我把这个按钮不使能发在和读数的一个函数里,还是把它另设一个函数。都不成功。每次按钮一按之后,等30秒读书显示了,这个按钮才被设置为不使能。我怎么能让它在一开始读书时就不使能呢。谢谢!
追答
看来你的读数过程是个同步过程,那么其实SetDisable()没有任何必要。因为在Get()函数返回之前,这个按钮不可能响应其他点击,是否disable其实没有任何影响。
同步读数会带来的问题就是:程序在Get()函数运行的这30秒内,看起来就跟死了一样,因为其他代码没有机会执行。
这也是为什么你看到按钮在Get()函数结束之后才被disable的原因。因为SetDisable()只是把按钮状态变成了disabled,但是这个函数不会去重新绘制界面。只有当Get()函数返回之后,重绘界面的代码才会执行,所以看起来就好象是过了30秒按钮才被disable。
langqiong261
2011-04-08 · TA获得超过1162个赞
知道小有建树答主
回答量:1175
采纳率:0%
帮助的人:1201万
展开全部
你把要实现的功能放在一个槽函数不行吗?
追问
没办法了。我的功能是这样的,这个按钮一按,我就把这个按钮设置不使能,然后开始读一个数30秒。设置按钮不使能主要是怕在这30s再按这个按钮会冲突。等30s数据读完了,在把按钮设置成使能。
但是问题是,如果我都放在一个槽里,这个设置不使能的功能只有在整个槽函数结束之后才会被设置。我试了很多次,用一个信号触发一个槽设置不使能,在再这个槽里触发一个信号触发另一个槽读30s数,结果都是在读完数之后设置不使能。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式