Qt信号和插槽。滑块和进度条

时间:2019-02-27 11:23:45

标签: c++ qt

connect(ui->horizontalSlider, SIGNAL(valueChanged(int)), 
        ui->progressBar, SLOT(setValue(ui->horizontalSlider->value()-100)));

例如,当滑块的值为30,进度条的值为70,但没有任何改变时,我试图连接信号和插槽。

2 个答案:

答案 0 :(得分:1)

欢迎上车。

令您惊讶的是,您想在连接内部进行计算。这不是它的工作方式。 请添加一个插槽(方法),如

void slotSetValue(int input)
{
  ui-progressBar->setValue(100 - input);
}

并像这样连接 connect(ui->horizontalSlider,SIGNAL(valueChanged(int)), this,slotSetValue(int)));

可能需要对您的代码进行微调。

ps。我建议使用经过编译时检查的Qt5连接。

答案 1 :(得分:1)

您通常这样做:

connect(ui->horizontalSlider, &QSlider::valueChanged, 
ui->horizontalSlider, &QSlider::setValue);

但是您的逻辑不正确,因为您将 valueChanged setValue 连接在一起,由于将发生溢出,这将导致应用崩溃...

另一方面,

仅用于管道信号和插槽,您不能对其中涉及的信号/函数进行数学运算,至少不是那样...您将需要一个lambda或类似的东西