QT信号和插槽.滑块和进度栏

Qt signals and slots. Slider and progress bar

本文关键字:信号 插槽 QT      更新时间:2023-10-16
connect(ui->horizontalSlider, SIGNAL(valueChanged(int)), 
        ui->progressBar, SLOT(setValue(ui->horizontalSlider->value()-100)));

例如,当滑块的值为30时,我试图连接信号和插槽,进度栏的值应为70,但没有任何更改,我找不到错误。

欢迎登上。

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

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

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

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

ps。我建议使用编译时间检查的QT5连接。

您通常这样做:

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

但是您的逻辑不正确,因为您正在将 valuechanged setValue 连接起来,因为溢出会发生...

,这会崩溃您的应用程序

另一方面,连接仅用于管道信号和插槽,您不能在涉及的信号/功能中进行数学