Ich habe eine Liste von Funktionen mit Parametern. Für jeden Parameter erstelle ich eine Spinbox mit ihrem Wert. Einige Funktionen haben keine Parameter, andere haben n> 1 Parameter.Qt - verbinden Signale von dynamisch erstellten Widgets
Der Code sieht wie folgt aus (vereinfacht)
for (int i = 0; i < parameterList.size(); ++i) {
QString valueName = parameterList().at(i);
double value = parameter(valueName);
QDoubleSpinBox * spinbox = new QDoubleSpinBox();
QLabel * label = new QLabel();
label->setText(valueName);
spinbox->setValue(value);
// does NOT work, Slot need three parameters!
QObject::connect(spinbox, &QDoubleSpinBox::valueChanged,
this, &OnAmplitudeParameterChanged);
... add widgets to layout
}
jedoch der Schlitz wissen muss, welche Widgets anrufen, den Parameternamen und seinen Wert. Das Signal liefert jedoch nur einen Wert.
Der Schlitz sieht wie folgt aus
OnAmplitudeParameterChanged(int index, QString name, double value)
Wie dies in Qt gelöst? Ich habe eine QSignalMapper-Klasse gefunden, aber nicht, wie dies mein Problem lösen würde.
Es kompiliert nicht 'QDoubleSpinBox * spinbox = qobject_cast (QObject :: sender());' gibt mir den Fehler 'error: kann 'QDoubleSpinBox' nicht in 'QDoubleSpinBox *' in Initialisierung konvertieren –
@MatthiasPospiech Whoops. Das sollte '' sein. Ich habe die Antwort ebenfalls korrigiert. –