我的主窗口中有多个滑块小部件,使用QT creater添加,我尝试在程序中设置滑块位置,滑块值是根据从颜色选择器对话框中选取的颜色(HSV)设置的。
我有一个颜色按钮,点击颜色按钮后,它会调出颜色选择器对话框,选择颜色后调用updateSlider()
来设置滑块位置。
void MainWindow::on_Color_clicked()
{
QColor color = QColorDialog::getColor(Qt::white);
int h,s,v;
color.getHsv(&h,&s,&v);
h = h/2;
ccfg.mHueL = h;
ccfg.mHueH = h;
ccfg.mSatL = s;
ccfg.mSatH = s;
ccfg.mValueL = v;
ccfg.mValueH = v;
updateSlider();
}
void MainWindow::updateSlider()
{
ui->hueL->setValue(ccfg.mHueL);
ui->hueH->setValue(ccfg.mHueH);
ui->satL->setValue(ccfg.mSatL);
ui->satH->setValue(ccfg.mSatH);
ui->valL->setValue(ccfg.mValueL);
ui->valH->setValue(ccfg.mValueH);
ui->thrED->setValue(ccfg.mThrEd);
ui->thrCD->setValue(ccfg.mThrCd);
ui->minR->setValue(ccfg.mMinR);
}
选择颜色后,只有第一个滑块更新,为什么其他滑块位置没有更新?
如果我再次选择相同的颜色,UI中的第二个滑块位置会更新为新值,如果我选择9次,则所有滑块的位置都会相应设置。
我尝试调用主窗口和窗口小部件的repaint()
,并尝试调用processEvents()
没有任何效果。有没有办法在setValue()
之后强制UI更新滑块小部件?
答案 0 :(得分:0)
确保不更新valueChanged插槽功能中的ccfg.mxxx值。