微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将函数与 Qt5 中的插槽连接

如何解决将函数与 Qt5 中的插槽连接

在 Qt5 中,有一个 new signal-slot syntax,我尝试使用它。

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

void update()
{
    cerr << "complete";
}

并将其连接到 &qradiobutton::pressed

qradiobutton *button = new qradiobutton;
QObject::connect(button,&qradiobutton::pressed,update);

一切顺利。之后,我尝试插入一个参数:

void update(bool trigger)
{
    if (!trigger) {return;}
    cerr << "complete";
}

并尝试连接:

qradiobutton *button = new qradiobutton;
QObject::connect(button,&qradiobutton::toggled(bool),update);

但它返回错误called to non-static member function without an object argument

我也试过这个:

QObject::connect(button,update(bool));

结果相同。

那么,我该如何修补它?或者,更有利的是,我如何将我的函数实现为插槽并让 Qt 以旧方式使用 SIGNAL()SLOT() 完成这项工作?

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

解决方法

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

QObject::connect(button,&QRadioButton::pressed,update);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。