Qt两种信号-槽连接方式的区别(二)
连接到lambda表达式:
基于函数子的连接语法可以将信号连接到C++ 11 lambda表达式,这些表达式实际上是内联槽。此功能在基于字符串的语法中不可用。
在下面的示例中,TextSender类发出一个textCompleted()信号,该信号携带一个QString参数。下面是类声明:
class TextSender : public QWidget {
Q_OBJECT
QLineEdit *lineEdit;
QPushButton *button;
signals:
void textCompleted(const QString& text) const;
public:
TextSender(QWidget *parent = nullptr);
};
以下的连接当用户单击按钮时会发出TextSender::textCompleted()信号:
TextSender::TextSender(QWidget *parent) : QWidget(parent) {
lineEdit = new QLineEdit(this);
button = new QPushButton("Send", this);
connect(button, &QPushButton::clicked, [=] {
emit textCompleted(lineEd