C++ 如何使用新语法QT5连接信号到信号?
我正在尝试使用新语法将信号连接到信号:C++ 如何使用新语法QT5连接信号到信号?,c++,qt,qt5,signals-slots,C++,Qt,Qt5,Signals Slots,我正在尝试使用新语法将信号连接到信号: connect(ui->line,&QLineEdit::returnPressed,ui->button,&QPushButton::clicked); 但是编译器抛出了一个错误,所有这些都是旧语法起作用的: connect(ui->line,SIGNAL(returnPressed()),ui->button,SIGNAL(clicked())); 我知道这可以连接到功能单击: connect(ui->
connect(ui->line,&QLineEdit::returnPressed,ui->button,&QPushButton::clicked);
但是编译器抛出了一个错误,所有这些都是旧语法起作用的:
connect(ui->line,SIGNAL(returnPressed()),ui->button,SIGNAL(clicked()));
我知道这可以连接到功能单击:
connect(ui->line,&QLineEdit::returnPressed,ui->button,&QPushButton::click);
但是有没有办法使用新语法将其连接到信号?快速浏览文档,不匹配源于clickedsignal的额外参数 一个选项是使用lambda插入该参数:
connect(ui->line,&QLineEdit::returnPressed, this, [this]() { ui->button->clicked(false); });
快速浏览文档,不匹配源于clickedsignal的额外参数 一个选项是使用lambda插入该参数:
connect(ui->line,&QLineEdit::returnPressed, this, [this]() { ui->button->clicked(false); });
让我们看看你得到的错误。是因为clicked接受了returnPressed信号中不存在的bool参数吗?@Botje静态断言失败:插槽需要的参数比信号提供的参数多。-静态断言失败:信号和插槽参数不兼容。-但是为什么旧的语法会起作用呢?告诉我们你得到的错误。是因为clicked接受了returnPressed信号中不存在的bool参数吗?@Botje静态断言失败:插槽需要的参数比信号提供的参数多。-静态断言失败:信号和插槽参数不兼容。-但是为什么旧的语法会起作用呢?只有一件事。从这个问题来看,@Artem072似乎想在触发returnPressed后发出clickedtrue。我说的对吗?@Botje ui不能被caputred,因为它是一个成员变量,您需要捕获它才能在lambda中访问它。此外,您可以调用ui->clickedfalse;代替按钮方法:ui->button->clickedfalse;我自己犯了一个错误,认为我们不需要通过目标论点。我把它放回去的原因只有一件事。从这个问题来看,@Artem072似乎想在触发returnPressed后发出clickedtrue。我说的对吗?@Botje ui不能被caputred,因为它是一个成员变量,您需要捕获它才能在lambda中访问它。此外,您可以调用ui->clickedfalse;代替按钮方法:ui->button->clickedfalse;我自己犯了一个错误,认为我们不需要通过目标论点。我把它放回原处