前回、時間の単位を時間、分、秒に変更する為のラジオボタンとイベントを作り実際に単位を変更する機能を実装しました(前回の記事)。今回は前回作ったイベントを利用して時間の値も変更させていきます。プログラミングをする際、コードを書くための知識以外にも算数の知識が必要になることもよくあります。以下が秒を基準にした時の計算式です。
・時間=秒/3600
・分=秒/60
。それではこの式を時間に関するラジオボタンのクリックイベント関数内に追加します。
//時間単位変更イベント
void MainWindow::on_rB_hour_clicked(bool checked)
{
if(_idxPsy==1)
{
ui->lE_I->setText(QString::number(_I/3600)); //秒→時間
ui->lbl_unitI->setText("h");
}
}
void MainWindow::on_rB_minutes_clicked(bool checked)
{
if(_idxPsy==1)
{
ui->lE_I->setText(QString::number(_I/60)); //秒→分
ui->lbl_unitI->setText("m");
}
}
void MainWindow::on_rB_seconds_clicked(bool checked)
{
if(_idxPsy==1)
{
ui->lE_I->setText(QString::number(_I)); //秒
ui->lbl_unitI->setText("s");
}
}
コードを書き終えたら実行し、以下手順で動作確認します。

例えば速度を10、時間を3600と入力し実行し距離を計算します。その後時間のラジオボタンを分、時間と変更してみましょう。分の場合は60、時間の場合は1と表示されると思います。これで時間変更機能が実装されました。次回は速度の単位を変更します。
※時間入力の際、小数点以上が3桁しか入力できない場合、正規表現のコードをこちらの記事を参考にvallineedit.cppファイルを修正してみてください。小数点以上を一桁以上入力可能に修正してあります。