Для подключения сигналов к слотам, насколько мне известно, параметры сигнала должны соответствовать параметрам слота. Так, например:Подключите сигналы к слотам с постоянными значениями
connect(dockWidget->titleBarWidget(), SIGNAL(closeButtonClicked()), ui->sideControls, SLOT(closeDockWidget()));
Но что, если я хочу, чтобы иметь сигнал вызова слот, который имеет различное количество параметров, но всегда проходят постоянное значение в слот. Например, используя вышеупомянутую часть кода:
connect(dockWidget->titleBarWidget(), SIGNAL(closeButtonClicked()), ui->sideControls, SLOT(setDockWidget(false)));
Или, другими словами, всякий раз, когда нажимается кнопка, она вызывает функцию setDockWidget()
с ложным параметром. Это возможно?
Этот ответ более недействителен, так как синтаксис Qt5 на C++ 11 позволяет легко использовать лямбда для этой цели. –
@ André, С другой стороны, вы просто можете «создать прокси-слот, который будет называть нужный.» Теперь на месте – Lol4t0
Конечно, вы можете. Но дополнительный слот означает, что в вашем заголовке больше нечего, выставляя внешние вызовы (да, даже если частный слот можно вызывать извне) и распространяется вокруг вашего кода в нескольких местах. Возможно, вам даже потребуются дополнительные переменные-члены для хранения значений, которые вы хотите передать, тем самым добавляя дополнительное состояние в свой класс. Решение лямбда настолько элегантнее, что дисквалифицирует введение прокси-слота в качестве решения IMO. –