如何将默认值设置为QDoubleSpinBox

时间:2017-09-08 11:57:59

标签: c++ qt

我正在对弹丸进行弹道计算。 所以我有一个复选框,基于复选框我必须输入 即如果启用了复选框,则从double-spinbox读取值并进行弹道计算

否则按双旋转框的默认值为我编写此代码,但我最终在setValue()中出错 所以对于我的要求wt方法我应该采取。

if(ui->checkBox->isChecked())
{
    //if it is checked then take the values given on UI

    altitude= ui-doubleSpinBox_1>text();
    b_pressure= ui-doubleSpinBox_2>text();
    r_humidity= ui-doubleSpinBox_3>text();
    temp=  ui-doubleSpinBox_4>text();
}
else
{
    ///else take the default values

    altitude=ui-doubleSpinBox_1>setValue(0);
    b_pressure=ui-doubleSpinBox_2>setValue(29.53);
    r_humidity=ui-doubleSpinBox_3>setValue(0.78);
    temp=ui-doubleSpinBox_4>setValue(78);
}

1 个答案:

答案 0 :(得分:1)

QDoubleSpinBox::setValue返回void类型的(缺少)值,对此没有任何转换。您正在尝试分配给(double?)变量,编译器告诉您这是不可能的。

相反,您应该有条件地设置默认值,然后无条件地读取值。这使(禁用?)ui保持最新状态。

if(!ui->checkBox->isChecked())
{
    // set the default values

    ui->doubleSpinBox_1->setValue(0);
    ui->doubleSpinBox_2->setValue(29.53);
    ui->doubleSpinBox_3->setValue(0.78);
    ui->doubleSpinBox_4->setValue(78);
}

altitude = ui->doubleSpinBox_1->value();
b_pressure = ui->doubleSpinBox_2->value();
r_humidity = ui->doubleSpinBox_3->value();
temp = ui->doubleSpinBox_4->value();

或者,您可以使用默认值有条件地设置变量,并无条件地从变量设置UI

if(!ui->checkBox->isChecked())
{
    // set the default values

    altitude = 0;
    b_pressure = 29.53;
    r_humidity = 0.78;
    temp = 78;
}

ui->doubleSpinBox_1->setValue(altitude);
ui->doubleSpinBox_2->setValue(b_pressure);
ui->doubleSpinBox_3->setValue(r_humidity);
ui->doubleSpinBox_4->setValue(temp);