Per collegare i segnali agli slot, per quanto ne so, i parametri del segnale devono corrispondere ai parametri dello slot. Così, per esempio:segnali Collegare le slot con valori costanti
connect(dockWidget->titleBarWidget(), SIGNAL(closeButtonClicked()), ui->sideControls, SLOT(closeDockWidget()));
Ma cosa succede se voglio avere un segnale di chiamata uno slot che ha una diversa quantità di parametri, ma sempre passare un valore costante nella fessura. Ad esempio, utilizzando il pezzo sopra di codice:
connect(dockWidget->titleBarWidget(), SIGNAL(closeButtonClicked()), ui->sideControls, SLOT(setDockWidget(false)));
In altre parole, ogni volta che si preme il pulsante, chiama la funzione setDockWidget()
con il parametro false. È possibile?
Questa risposta non è più realmente valida, come la sintassi QT5 su C++ 11 rende molto facile da usare un lambda per questo scopo. –
@ André, D'altra parte, si può solo creare 'slot di proxy, che chiamerà desiderato one.' ora in atto – Lol4t0
Certo, è possibile. Ma uno slot extra significa più elementi nella tua intestazione che non vuoi, esponendo a chiamate esterne (sì, anche se è possibile chiamare uno slot privato dall'esterno) e diffondendo il tuo codice su più posizioni. Potresti anche aver bisogno di variabili membro aggiuntive per contenere i valori che vuoi passare, introducendo così uno stato aggiuntivo nella tua classe. La soluzione lambda è molto più elegante che squalifica l'introduzione di uno slot proxy come soluzione IMO. –