带有默认参数的Qt槽

时间:2012-02-22 22:04:47

标签: c++ qt signals-slots

我有一个旋转控件块,可以更改数组的各个元素 我想要指定哪个控件在信号中发送消息

,而不是单独的接收器插槽功能

您可以使用QSignalMapper执行此操作 - 但无论如何只是按照以下方式执行此操作?

spin0 = new QDoubleSpinBox;
connect(spin0,SIGNAL(valueChanged(double)),this,SLOT(handler(0,double));

spin1 = new QDoubleSpinBox;
connect(spin1,SIGNAL(valueChanged(double)),this,SLOT(handler(1,double));
....

private slot:
void handler(int element,double value);

2 个答案:

答案 0 :(得分:3)

从任何插槽处理程序中,您都可以使用sender()获取指向发送信号的对象的指针。然后,您可以使用objectName()属性来传达任何进一步的识别信息。

答案 1 :(得分:1)

我不相信,至少不使用该语法...... SIGNALSLOT宏将其参数转换为字符串,然后由Qt运行时解析并使用它们 - 在编译的预处理阶段期间由moc创建的表中的相关函数和/或类方法。因此,如果您将一个默认参数编码到SLOT宏中,那么这不是一个有效的函数签名,Qt可以使用该签名对moc生成的函数表中的实际槽函数进行运行时查找