如何在qt5中向SLOT函数传递多个参数?

时间:2014-08-07 03:57:50

标签: c++ qt arguments qt5 signals-slots

作为样本,我有一个功能

void MyClass::foo( int i, int j ){ cout << i+j; }

我希望一个信号在类

的某个函数上执行一个槽
connect( Object, SIGNAL( mysignal() ), SLOT( this->foo(1,2) ) );

使用一个参数可以工作,但在插槽上显示2个或更多参数的错误。

2 个答案:

答案 0 :(得分:4)

QT拥有关于信号和插槽http://qt-project.org/doc/qt-5/signalsandslots.html的出色文档,请确保您理解语法。在你的情况下,它将像

connect( pointerToObjectEmittingTheSignal, SIGNAL(my_signal(int, int) ), 
         this, SLOT(my_slot(int, int));

此外,您的信号声明应采用intint类型的两个参数

signals:
     void my_signal(int, int);

答案 1 :(得分:2)

请注意,在Qt5中,您可以使用new signal/slot syntax并写下:

connect( pointerToObjectEmittingTheSignal, &MyClass::my_signal, 
         this, &MyOtherClass::my_slot);

优点是如果你犯了一个错误,你将得到一个编译时错误,而不是运行时错误。