Ich habe einige Code, der etwa wie folgt aussieht:Wie kann ich QT5() auf einem Steckplatz mit Standardparametern verbinden
class MyClass : public QObject
{
Q_OBJECT
signals:
void SetValue(float value);
public slots:
void OnSetValue(float value, bool fromDatabase = false);
}
connect(this, SIGNAL(SetValue(float)), this, SLOT(OnSetValue(float)));
Dies funktioniert gut, aber ich möchte Vorteil Qt5's new signal/slot syntax nehmen (und entfernen Sie die Makros). Wenn ich ändern Sie die connect() dazu:
connect(this, &MyClass::SetValue, this, &MyClass::OnSetValue);
ich (in Visual Studio 2013):
Fehler C2338: Der Steckplatz mehr Argumente erfordert als das Signal
bietet Ich könnte eine intermediäre Funktion erstellen, die OnSetValue() aufruft und erlaubt, dass die Standardparameter gesetzt werden, aber das scheint eine Verschwendung von Code zu sein. Was ist eine bessere Lösung?
Nach Qt Wiki ist es nicht möglich mit Member Funktionszeiger: https://wiki.qt.io/New_Signal_Slot_Syntax#cons. – sim642
'connect (this, & MyClass :: SetValue, [this] (Gleitkommawert) {OnSetValue (value);});' –