С Qt 5 и компилятором C ++ 11, идиоматический способ сделать такие вещи - дать функтор для connect
:
connect(action1, &QAction::triggered, this, [this]{ onStepIncreased(1); });
connect(action5, &QAction::triggered, this, [this]{ onStepIncreased(5); });
connect(action10, &QAction::triggered, this, [this]{ onStepIncreased(10); });
connect(action25, &QAction::triggered, this, [this]{ onStepIncreased(25); });
connect(action50, &QAction::triggered, this, [this]{ onStepIncreased(50); });
Третий аргумент connect
является номинально необязательным. Он используется для настройки контекста потока, в котором будет выполняться функтор. Это всегда необходимо, когда функтор использует экземпляр QObject
. Если функтор использует несколько экземпляров QObject
, у них должен быть какой-то общий родительский элемент, который управляет их временем жизни, а функтор должен ссылаться на этого родительского элемента, или необходимо обеспечить, чтобы объекты пережили функтор.
В Windows это работает в MSVC2012 и новее.