1 Qter豆
想在一个对话框上设置一个Slider一个SpinBox,两者数值同步变化,Slider的范围是-10~10,步长为1,SpinBox的范围是-1~1,步长为0.1,两个控件之间的值是十倍关系,现在的问题是两个控件之间能够互相控制,但是点击SpinBox增大按键的时候,0.7变0.8,Slider的数值却不变化,在点一下变0.9时,Slider也变成9了,减小正常,0.8变0.7,Slider也变化,减小SpinBox的数值,-0.7变-0.8时,也有同样的问题。输出debug信息后发现,0.7变0.8时Slider的值设置函数没被调用。
另外出现了两个警告:
onecoreuap\shell\windows.storage\sharedstoragesources\util.cpp(6571)\windows.storage.dll!769A16F0: (caller: 769A15C7) ReturnHr(1) tid(1c64) 80004002
onecoreuap\inetcore\urlmon\zones\zoneidentifier.cxx(359)\urlmon.dll!6C846017: (caller: 6C846F48) ReturnHr(1) tid(1c64) 80070002
下面是我的代码:
sdlg->show();
sdlg->ui->sp_para_lbl->setText("BRIGHTNESS");
sdlg->ui->sp_valu_spb->setDecimals(1);
sdlg->ui->sp_valu_sld->setMaximum(10);
sdlg->ui->sp_valu_sld->setMinimum(-10);
sdlg->ui->sp_valu_sld->setPageStep(1);
sdlg->ui->sp_valu_spb->setMaximum(1);
sdlg->ui->sp_valu_spb->setMinimum(-1);
sdlg->ui->sp_valu_spb->setSingleStep(0.1);
void Guider::SpinBoxShowNum()
{
int i = sdlg->ui->sp_valu_sld->value();
double d = (double)i / 10;
sdlg->ui->sp_valu_spb->setValue(d);
}
void Guider::SliderShowNum()
{
double d = sdlg->ui->sp_valu_spb->value();
d = d * 10;
sdlg->ui->sp_valu_sld->setValue(d);
}
connect(sdlg->ui->sp_valu_sld,SIGNAL(valueChanged(int)),this,SLOT(SpinBoxShowNum()));
connect(sdlg->ui->sp_valu_spb,SIGNAL(valueChanged(double)),this,SLOT(SliderShowNum()));
我来回答