アルゴリズム
前回は時間の単位を変えると値を変更する機能を実装しました(前回の記事)。今回は単位変更に伴う速度の単位変更部分を作ります。
速度の単位は距離/時間で表せます。つまりプログラムは現在表示している距離の単位と時間と単位を活用します。mainwindow.cppに以下コードを追記します。
コード
// 省略
void MainWindow::on_rB_k_clicked(bool checked)
{
// 省略
case 1:
ui->lE_E->setText(QString::number(_E/1000));
ui->lE_R->setText(QString::number(_R/1000));
ui->lE_I->setText(QString::number(_I));
ui->lbl_unitE->setText("km");
ui->lbl_unitR->setText(ui->lbl_unitE->text()+"/"
+ui->lbl_unitI->text()); //追記
break;
}
}
}
void MainWindow::on_rB_normal_clicked(bool checked)
{
// 省略
case 1:
ui->lE_E->setText(QString::number(_E));
ui->lE_R->setText(QString::number(_R));
ui->lE_I->setText(QString::number(_I));
ui->lbl_unitE->setText("m");
ui->lbl_unitR->setText(ui->lbl_unitE->text()+"/"
+ui->lbl_unitI->text()); //追記
break;
}
}
}
void MainWindow::on_rB_m_clicked(bool checked)
{
// 省略
case 1:
ui->lE_E->setText(QString::number(_E*1000));
ui->lE_R->setText(QString::number(_R*1000));
ui->lE_I->setText(QString::number(_I));
ui->lbl_unitE->setText("mm");
ui->lbl_unitR->setText(ui->lbl_unitE->text()+"/"
+ui->lbl_unitI->text()); //追記
break;
}
}
}
//時間単位変更イベント
void MainWindow::on_rB_hour_clicked(bool checked)
{
if(_idxPsy==1)
{
ui->lE_I->setText(QString::number(_I/3600)); //秒→時間
ui->lbl_unitI->setText("h");
ui->lbl_unitR->setText(ui->lbl_unitE->text()+"/"
+ui->lbl_unitI->text()); //追記
}
}
void MainWindow::on_rB_minutes_clicked(bool checked)
{
if(_idxPsy==1)
{
ui->lE_I->setText(QString::number(_I/60)); //秒→分
ui->lbl_unitI->setText("m");
ui->lbl_unitR->setText(ui->lbl_unitE->text()+"/"
+ui->lbl_unitI->text()); //追記
}
}
void MainWindow::on_rB_seconds_clicked(bool checked)
{
if(_idxPsy==1)
{
ui->lE_I->setText(QString::number(_I)); //秒
ui->lbl_unitI->setText("s");
ui->lbl_unitR->setText(ui->lbl_unitE->text()+"/"
+ui->lbl_unitI->text()); //追記
}
}
現在表示中の距離と時間を活用するということでlineEditのtextを使って速度を表示するプログラムを作りました。このやり方は変数を増やさずに済むのですが1行が長くなるのが難点です。行が長くなるのが嫌な場合は距離と時間の単位を変数に格納し、距離の変数/時間の変数としてもOKです。
次回は単位変更に伴う速度の値を再計算するコードを作ります。