QT 信号槽connect写法QPushButton *btn = new QPushButton;
// 方式一:
connect(btn, &QPushButton::clicked, this, &MainWindow::close);
// 方式二:lambda表达式
connect(btn, &QPushButton::clicked, this, [&]() {
this->close();
});
QT4中老式写法,是利用SIGNAL SLOT宏,该方法已经过时了;
方式一 Qt5中新式写法,编译时对信号和槽进行检查不容易出错,而且随便一个普通函数都可作为槽,不必专门指定类型为槽函数;另外如果省略槽对象,qtcreator不会提示错误,但编译无法通过
该方法有个缺点:当函数有重载时会提示错误,解决方法可以是使用函数指针,例如:void (QDoubleSpinBox::*f)(double) = &QDoubleSpinBox::valueChanged;
connect(ui->inflationRateDoubleSpinBox, f, this, &AverageWidget::refreshValue);
中有重载信号的辅助函数如下:(但是我的代码没有成功,)
QOverload(&QDoubleSpinBox::valueChanged)
方式二 采用了lambda表达式的写法,更加方便快捷。
参数要求:信号的参数数量 >= 槽的参数数量,