Para conectar señales a ranuras, hasta donde yo sé, los parámetros de la señal deben coincidir con los parámetros de la ranura. Así, por ejemplo:Conectar señales a ranuras con valores constantes
connect(dockWidget->titleBarWidget(), SIGNAL(closeButtonClicked()), ui->sideControls, SLOT(closeDockWidget()));
Pero lo que si quiero tener una señal de llamada en una ranura que tiene una cantidad diferente de parámetros, pero siempre pasar un valor constante en la ranura. Por ejemplo, el uso de la pieza de código anterior:
connect(dockWidget->titleBarWidget(), SIGNAL(closeButtonClicked()), ui->sideControls, SLOT(setDockWidget(false)));
O en otras palabras, cada vez que se pulsa el botón, se llama a la función setDockWidget()
con el parámetro falso. es posible?
Esta respuesta ya no es válida, ya que la sintaxis de Qt5 en C++ 11 hace que sea bastante fácil usar una lambda para este propósito. –
@ André, en el otro lado, simplemente puede 'crear ranura de proxy, que llamará a la deseada '. Ahora en su lugar – Lol4t0
Claro, puede. Pero una ranura adicional significa más cosas en su encabezado que no desea, exponerlas a llamadas externas (sí, incluso si se puede llamar a una ranura privada desde el exterior) y distribuir su código en varias ubicaciones. Incluso puede necesitar variables miembro adicionales para contener los valores que desea aprobar, introduciendo así un estado adicional en su clase. La solución lambda es mucho más elegante que descalifica la introducción de una ranura proxy como solución IMO. –