• 8560阅读
  • 6回复

槽函数  参数传递问题 [复制链接]

上一主题 下一主题
离线rockyluo
 

只看楼主 倒序阅读 楼主  发表于: 2008-09-01
— 本帖被 XChinux 执行加亮操作(2008-09-03) —
问下各位,在信号/槽 机制中,为啥在调用槽函数过程中放个参数时出错?
-----------------------------------------------------------------------
public slots:
                virtual void backToMain( int );

------------------------------------------------------------------------

void Form1 :: backToMain( int i )
{
        switch(i)
        {
          case 1:  ...........
            ...........................
        }
}

------------------------------------------------------------------------

connect( b1,SIGNAL( clicked() ) , this, SLOT( backToMain( 1) )  );

----------------------------------------------------------------------------
编译通过,运行时出现  QObject::connect: No Such Slot Form1::backToMain( 1 )


应如何修改?

                                                                                                              我们要团结一心,秉承Linux的开源精神,共享Qt问题的解决方法!
离线water_wf

只看该作者 1楼 发表于: 2008-09-01
Re:槽函数   参数传递问题
编译通过?你怎么编译的?
离线rockyluo

只看该作者 2楼 发表于: 2008-09-02
直接用产生的Makefile文件make啊~~~
难道这也有问题么?
                                                                                                              我们要团结一心,秉承Linux的开源精神,共享Qt问题的解决方法!
离线waterddy

只看该作者 3楼 发表于: 2008-09-02
这个肯定能编译通过,但是信号槽没有建立连接。


错误在于参数部分,signal和slot可以传递参数,但是,不能用具体变量或者具体数值传,只能利用参数的类型传。

楼主的代码应改为:

connect( b1,SIGNAL( clicked(int) ) , this, SLOT( backToMain(int) )  );
离线waterddy

只看该作者 4楼 发表于: 2008-09-02
上面有地方说错了,抱歉。

传参数不能用clicked()信号。这个没有参数。楼主另外写个有参数的信号,把”clicked“替换掉吧
离线rockyluo

只看该作者 5楼 发表于: 2008-09-02
啊  非常感谢  我想最好的办法也就你说的咯
其实  我昨天用全局变量实现了所要的功能  只不过界面一多  用变量赋值就麻烦了
我试下你的方法    再次感谢!
                                                                                                              我们要团结一心,秉承Linux的开源精神,共享Qt问题的解决方法!
离线cspp

只看该作者 6楼 发表于: 2008-09-02
Re:槽函数   参数传递问题
clicked是没有参数的,
你可以自己写一个signal,在clicked里面emit
快速回复
限100 字节
 
上一个 下一个