Error al conectar señales y slots sobrecargados (overloaded)
-
Que tal, estoy retomando Qt y por falta de practica estoy teniendo problemas conectando señales y slots.
Tengo un Widget con un QComboBox y un QLCDNumber, el combobox emite una señal cuando el index seleccionado cambia [documentacion], en la misma documentación nos indica que debemos de hacer un static_cast en caso de que estemos usando la sintaxis de puntero a funciones a la hora de conectar la señal (currentIndexChanged) con un slot, como sigue:
connect(comboBox, static_cast<void(QComboBox::*)(int)>(&QComboBox::currentIndexChanged), [=](int index){ /* ... */ });
Esta señal la quiero conectar al QLCDNumber, este tiene el slot (display) [documentación]:
Según [este] link una de las ventajas de usar la sintaxis de puntero a funciones a la hora de conectar señales y slots es que el compilador puede revisar que los argumentos de la señal y del slot sean los mismos, en este caso ambos son int así que los intento conectar la señal y slot como sigue:
QObject::connect(ui->comboBox, static_cast<void(QComboBox::*)(int)>(&QComboBox::currentIndexChanged), ui->lcdNumber, &QLCDNumber::display);
Y obtengo el siguiente error:
.../QtProyects/dropDown_map/mainwindow.cpp:30: error: no matching function for call to ‘MainWindow::connect(QComboBox*&, void (QComboBox::*)(int), QLCDNumber*&, <unresolved overloaded function type>)’ &QLCDNumber::display); ^
¿Alguna sugerencia? Según interpreto el error es como si &QLCDNumber::display no estuviera declarada(?)
Saludos
-
No hablo español, pero
//QLCDNumber::display is overloaded too -> QObject::connect(ui->comboBox, static_cast<void(QComboBox::*)(int)>(&QComboBox::currentIndexChanged), ui->lcdNumber, static_cast<void(QLCDNumber::*)(int)>(&QLCDNumber::display);
or
QObject::connect(u->comboBox, SIGNAL(currentIndexChanged(int)), ui->lcdNumber, SLOT(display(int)));
:-)
-
Hola @J-Hilk , si ese era el problema, ahora compila y funciona como debería :), todavía me resta entender el static_cast.
Saludos :)