我有一个类,其中有一个带有以下签名的信号:
// CLASS A
signals:
void requestToChangeRange(voltage_range_e vr, current_range_e cr, uint16_t bits);
还有另一个类具有像这样的插槽(请注意额外的参数)
// CLASS C
public slots:
void handleRequestRangeChange(voltage_range_e vr, current_range_e cr, uint16_t bits, uint16_t limiter);
我有一个类"B",它是所有其他类的会合点。当类"A"发出信号时,类"C"应将其重定向到类"B"。但是,类"B"中的槽上的额外参数是问题所在,因为那个额外参数来自另一个类"X"。 因此,如果类"A"和"C"的信号和槽匹配,我将在类"B"中执行以下操作:
// somewhere in CLASS B (the manager of all other classes)
connect(pClassA, &ClassA::requestToChangeRange,
pClassC, &ClassC::handleRequestRangeChange);
但是显然这样做行不通,因为函数签名的原因。我想要做的是类似于:
// somewhere in CLASS B (the manager of all other classes)
connect(pClassA, &ClassA::requestToChangeRange,
this /* class B */, []() {
// Get that last required parameter from class X
uint16_t limiter = pClassX->getValue();
// Call slot of class C
pClassC->handleRequestRangeChange(vr, cr, bits, limiter);
});
那么我该如何在lambda内部访问这些传递的参数呢?这是否可能?