Qt: подключение сигнала к слоту, имеющему больше аргументов - PullRequest
3 голосов
/ 13 августа 2011

Я хочу подключить сигнал clicked() от кнопки к слоту другого объекта.

В настоящее время я подключаю сигнал к вспомогательному методу и оттуда вызываю нужный слот:

connect(button, SIGNAL(clicked()), this, SLOT(buttonClicked()));

void buttonClicked() { // Helper method. I'd like to avoid it.
    someObject.desiredSlot(localFunc1(), localFunc2());
}

Но, может быть, есть более простой и очевидный способ сделать это?

Ответы [ 4 ]

7 голосов
/ 13 августа 2011

это то, что вы хотите сделать:

сигнал должен быть подключен к «selectedSlot», который принимает два аргумента, возвращаемых localFunc1 & 2 ??

возможно, как вы можете прочитать в документации QT.Слот может принимать меньше аргументов, чем предусмотрено сигналом, но не наоборот!(В документации написано «Это соединение сообщит об ошибке во время выполнения»)

3 голосов
/ 24 апреля 2015

Это должно работать с новым механизмом сигнала / слота в qt 5:

connect( button, &QPushButton::clicked, [&](){ someObject.desiredSlot( localFunc1(), localFunc2() ); } );

Вам нужно будет настроить лямбда-захват в соответствии с вашими потребностями.

1 голос
/ 13 августа 2011

В некоторых случаях могут помочь аргументы по умолчанию, например, объявить требуемый слот как:

desiredSlot(int a=0, int b=0)

Вы не можете получить доступ к членам в аргументе по умолчанию.

0 голосов
/ 13 августа 2011

Это не способ подключения сигналов и слотов в QT. Вы должны использовать:

connect(button, SIGNAL(clicked()), receiver, SLOT(slotToBeCalled());

Ознакомьтесь с документацией QT .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...