• 9146阅读
  • 5回复

【提问】singal与slot问题! [复制链接]

上一主题 下一主题
离线daydayup
 
只看楼主 倒序阅读 楼主  发表于: 2005-09-15
请问如果我在一个循环中创建了n个QCheckBox,想在循环中实现信号和槽的关联,但是在槽中带参数i却老是不行,简单代码如下:
    for(int i=0;i<n;i++)//n比较大
    {
      checkBox = new QCheckBox( parent, "checkBox" );
      connect( checkBox, SIGNAL( clicked() ), this, SLOT( checkBox_Call(i) ) );
    }
  .......

是不是不能这样带参数啊,如果不行,如何将参数i传入checkBox_Call函数中呢?
请高手指教!!!!
离线myer

只看该作者 1楼 发表于: 2005-09-15
checkBox_Call(i) 的i怎么能由 clicked() 传进来呢?

除非一个无参数的signal会变魔术:)

既然是checkbox,clicked后状态是可以读到的,在处理函数中不用知道是谁触发的。
如果需要知道触发对象,使用参考QObject。
http://user.qzone.qq.com/56430808
离线yfy002

只看该作者 2楼 发表于: 2005-09-15
connect(checkBox, SIGNAL( clicked() ),   this, SLOT(checkBox_Call(QCheckBox *) ));

不知道这样是否可以
在checkBox_Call(QCheckBox *name) 槽中根据CheckBox的值分别处理,我想这样因该是可以的。
我渴望平静,风却给了我涟漪
我的blog:
http://sungaoyong.cublog.cn
离线daydayup
只看该作者 3楼 发表于: 2005-09-15
我的意思是想在checkBox_Call中得到i的值,以为在槽中要用到这个i.以为n比较大,我想通过i的值判断是哪个QCheckBox.
离线daydayup
只看该作者 4楼 发表于: 2005-09-15
不好意思,打错了,不是"以为",是"因为".
离线tdrhsb
只看该作者 5楼 发表于: 2005-09-17
QCheckBox继承了QButton,它的信号有
void pressed ()
void released ()
void clicked ()
void toggled ( bool on )
void stateChanged ( int state )
只有void toggled ( bool on )和void stateChanged ( int state )有参数,其他的都没有参数
connect( checkBox, SIGNAL( clicked() ), this, SLOT( checkBox_Call() ) )应该是没有问题,
好像无法获取你的i值。
你如果有一组的QCheckBox你可以用QGroupBox把它们组合在一起。
快速回复
限100 字节
 
上一个 下一个