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