[英]Qt: connecting signal to slot having more arguments
我想将按钮中的clicked()
信号连接到不同 object 的插槽。
目前我将信号连接到辅助方法并从那里调用所需的插槽:
connect(button, SIGNAL(clicked()), this, SLOT(buttonClicked()));
void buttonClicked() { // Helper method. I'd like to avoid it.
someObject.desiredSlot(localFunc1(), localFunc2());
}
但也许有一种更简单、更明显的方法来做到这一点?
这是你想要做的:
点击的信号应该连接到“desiredSlot”,它需要两个由localFunc1和2返回的arguments?
这是不可能的,您可以阅读 QT 文档。 一个插槽可以占用比信号提供的更少的 arguments - 但不能相反! (文档说“此连接将报告运行时错误”)
这应该适用于 qt 5 中的新信号/插槽机制:
connect( button, &QPushButton::clicked, [&](){ someObject.desiredSlot( localFunc1(), localFunc2() ); } );
您需要根据需要调整 lambda 捕获。
在某些情况下,默认 arguments 可能会有所帮助,例如将 desiredSlot 声明为:
desiredSlot(int a=0, int b=0)
但是,您不能访问默认参数中的成员。
这不是在 QT 中连接信号和插槽的方法。 你应该使用:
connect(button, SIGNAL(clicked()), receiver, SLOT(slotToBeCalled());
查看QT 文档。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.