如何解决将函数与 Qt5 中的插槽连接
在 Qt5 中,有一个 new signal-slot syntax,我尝试使用它。
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 举报,一经查实,本站将立刻删除。