簡體   English   中英

如果禁用,小部件無法發送信號

[英]Widget cant send signal if it is disabled

我有一個基本問題

有一個按鈕可以啟用小部件,如下所示:

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

您能建議一種在禁用小部件時發送零信號的方法嗎?

我認為最好為CurrentButtonOne定義以下插槽:

void disableMe() {

    //Disable
    setDisabled(true);

    //Reset current_uA
    current_uA = 0;
}

然后按如下方式連接信號和插槽:

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

希望這可以幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM