将函数与Qt5中的插槽连接

将函数与Qt5中的插槽连接,qt,qt5,signals-slots,Qt,Qt5,Signals Slots,在Qt5中,有一个,我试着利用它 首先,我创建了一个void返回类型函数: void update() { cerr << "complete"; } 事情进展顺利。之后,我尝试插入一个参数: void update(bool trigger) { if (!trigger) {return;} cerr << "complete"; } 但它返回了错误:在没有对象参数的情况下调用非静态成员函数 我也试过

在Qt5中,有一个,我试着利用它

首先,我创建了一个
void
返回类型函数:

void update()
{
    cerr << "complete";
}
事情进展顺利。之后,我尝试插入一个参数:

void update(bool trigger)
{
    if (!trigger) {return;}
    cerr << "complete";
}
但它返回了错误:
在没有对象参数的情况下调用非静态成员函数

我也试过这个:

QObject::connect(button, &QRadioButton::toggled(bool), update(bool));
同样的结果

那么,我如何修补这个?或者,更有利的是,我如何将我的功能实现为一个插槽,并让Qt以旧式方式使用
SIGNAL()
slot()


旁注:我完全理解并测试了第一种情况(使用
void
返回类型),但我想知道,如果我必须处理第二种情况(实际上会很多),什么是一个好的选择。

您不必设置签名,因为Qt将使用插槽的签名,所以您的初始代码应该可以工作:

QObject::connect(按钮和QRadioButton::按下,更新);

我知道这一点,但我想知道,无论出于何种原因,我必须处理案例2(使用参数),是否有解决问题的方法?(我编辑了这篇文章,并在旁注中提到了这一点)@SilverFox与案例1的相同联系适用于案例2,这是我的答案。你试过我对案例2的解决方案吗?是的,我试过了。但是,出于某种原因,如果我真的使用参数,比如
void updateInc(int I){a+=I;}
(当然信号提供了
int
),参数还会通过吗?@SilverFox您在评论中显示的代码不在帖子中,我认为问题的原因是另一个(什么是<代码> A/COD>?),所以我建议你创建一个新的帖子,提供一个是的,我在路上。谢谢你的支持。
QRadioButton *button = new QRadioButton;
QObject::connect(button, &QRadioButton::toggled(bool), update);
QObject::connect(button, &QRadioButton::toggled(bool), update(bool));