• 5510阅读
  • 6回复

QT中按钮的信号处理 [复制链接]

上一主题 下一主题
离线yangyunzhao
 

只看楼主 倒序阅读 楼主  发表于: 2009-06-17
我在界面上有4个按钮和一个标签,Button1,Button2,Button3,Button4,Label1。
假设我需要是按下不同按钮,就在label上显示不同的值。该如何处理?

有人会说,每个按钮的clicked()信号绑定到一个槽,比如Button1的绑定到自定义的槽button1Text,然后在这个槽里面修改Label1的属性。
有多少个按钮就做多少个槽。我觉得太麻烦,而且代码量太大了。

我现在的处理方式是,每个按钮的clicked绑定到不同的槽,这个槽再发出一个自定义的信号,这个信号带int类型参数,表示是哪个Button发出的,这些信号再统一发送到一个自定义的槽setText,在这里修改Label的属性。这样感觉好点。

但是我想有没有更加方便的方式,把这四个按钮的信号,直接绑定到某个自定义的槽上面,这个槽根据发出信号的源不同,而做出不同响应?

谢谢
离线vc_2003
只看该作者 1楼 发表于: 2009-06-17
用buttongroup可以实现吧
离线hwj180

只看该作者 2楼 发表于: 2009-06-17
可以绑定到同一个自定义的槽上,然后在这个槽的处理函数里处理不同按钮点击的处理。
离线yangyunzhao

只看该作者 3楼 发表于: 2009-06-18
2楼的朋友,请问如果绑定到同一个自定义的槽,那么这个自定义的槽如何知道它接收到的clicked()是哪个Button发出来的呢?clicked()信号是没有参数的啊。
离线yangyunzhao

只看该作者 4楼 发表于: 2009-06-18
1楼的朋友,你说的我正在看官方文档,似乎有戏。
离线vc_2003
只看该作者 5楼 发表于: 2009-06-18
connect( QButtonGroup, SIGNAL( clicked ( int  )), this,SLOT(btnclicked(int) ) );

然后在btnclicked里面根据这id来区分不同的按钮。
离线zealane

只看该作者 6楼 发表于: 2009-06-18
也可以用Qmapper来做。
帮助里有
快速回复
限100 字节
 
上一个 下一个