我想将按钮中的信号clicked()
连接到不同对象的插槽。
目前我将信号连接到辅助方法并从那里调用所需的插槽:
connect(button, SIGNAL(clicked()), this, SLOT(buttonClicked()));
void buttonClicked() { // Helper method. I'd like to avoid it.
someObject.desiredSlot(localFunc1(), localFunc2());
}
但也许有一种更简单明了的方法可以做到这一点?
答案 0 :(得分:7)
这就是你想要做的:
点击的信号应该连接到“desiredSlot”,它接受localFunc1& amp;返回的两个参数。 2 ??
这是不可能的,因为您可以在QT文档中阅读。一个插槽可以占用比信号提供的更少的参数 - 但不是相反的方式! (文档说“此连接将报告运行时错误”)
答案 1 :(得分:3)
这应该与qt 5中的新信号/插槽机制一起使用:
connect( button, &QPushButton::clicked, [&](){ someObject.desiredSlot( localFunc1(), localFunc2() ); } );
您需要根据需要调整lambda捕获。
答案 2 :(得分:1)
在某些情况下,默认参数可能有所帮助,例如将desiredSlot声明为:
desiredSlot(int a=0, int b=0)
但您无法访问默认参数中的成员。
答案 3 :(得分:0)
这不是在QT中连接信号和插槽的方法。你应该使用:
connect(button, SIGNAL(clicked()), receiver, SLOT(slotToBeCalled());