在Qt5中,有一种新的信号槽语法,我尝试使用它
首先,我创建了一个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, &QRadioButton::toggled(bool), update(bool));
结果相同。
那么,我该如何修补呢?或者,更有利的是,我如何将我的功能实现为插槽,并让Qt以SIGNAL()
和SLOT()
的旧方式完成工作?
旁注:我完全理解并测试了第一种情况(void
返回类型(,但我想知道如果我必须处理第二种情况(实际上会很多(,什么是好的选择。
您不必设置签名,因为Qt将使用插槽的签名,所以您的初始代码应该可以工作:
QObject::connect(button, &QRadioButton::pressed, update);