connect(ui->horizontalSlider, SIGNAL(valueChanged(int)),
ui->progressBar, SLOT(setValue(ui->horizontalSlider->value()-100)));
例如,当滑块的值为30,进度条的值为70,但没有任何改变时,我试图连接信号和插槽。
答案 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或类似的东西