Виджет не может отправлять сигнал, если он отключен - PullRequest
0 голосов
/ 29 мая 2020

У меня основной c вопрос

Есть кнопка для включения виджета, как показано ниже:

connect(ui->pushButton_currOnOne, &QPushButton::clicked, ui->widget_currentOne, &CurrentButtonOne::setEnabled);

, и этот виджет подключается к слоту для настройки значения:

 connect(ui->widget_currentOne, &CurrentButtonOne::getValue, this, &stageProgram::setCurrOnChannelOne);

и слот:

void stageProgram::setCurrOnChannelOne(unsigned int current_uA)
{
    tetra_grip_api::stimulation_set_current( m_channelOne, current_uA); // second argument I get as signal from the widget
}

Но что мне теперь нужно, если виджет отключен , значение сигнала должно быть 0 (имеется в виду current_uA = 0)

Я думал вызвать другой слот и установить current_uA = 0. Похоже, это невозможно ..

Я пробовал использовать Lambda

connect(ui->widget_currentOne, &CurrentButtonOne::getValue,
        [this](unsigned int current_uA) { setCurrOnChannelOne(ui->widget_currentOne->isEnabled() ? current_uA : 0); } ); 
//this does not send 0 when it is disabled

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

1 Ответ

0 голосов
/ 29 мая 2020

Я думаю, что лучше определить следующий слот для CurrentButtonOne:

void disableMe() {

    //Disable
    setDisabled(true);

    //Reset current_uA
    current_uA = 0;
}

, а затем подключить сигналы и слоты следующим образом:

connect(ui->pushButton_currOnOne, &QPushButton::clicked, ui->widget_currentOne, &CurrentButtonOne::disableMe);

Надеюсь, это поможет.

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