繁体   English   中英

Qt:将信号连接到具有更多 arguments 的插槽

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM