Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/164.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何使用新语法QT5连接信号到信号?_C++_Qt_Qt5_Signals Slots - Fatal编程技术网

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;我自己犯了一个错误,认为我们不需要通过目标论点。我把它放回原处