You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
73 lines
1.7 KiB
73 lines
1.7 KiB
13 years ago
|
/****************************************************************************
|
||
|
** ui.h extension file, included from the uic-generated form implementation.
|
||
|
**
|
||
|
** If you wish to add, delete or rename functions respectively slots use
|
||
|
** Qt Designer which will update this file, preserving your code. Create an
|
||
|
** init() function in place of a constructor, and a destroy() function in
|
||
|
** place of a destructor.
|
||
|
*****************************************************************************/
|
||
|
|
||
|
#include <qvalidator.h>
|
||
|
|
||
|
void ConversionForm::init()
|
||
|
{
|
||
|
numberLineEdit->setValidator( new QDoubleValidator( numberLineEdit ) );
|
||
|
numberLineEdit->setText( "10" );
|
||
|
convert();
|
||
|
numberLineEdit->selectAll();
|
||
|
}
|
||
|
|
||
|
void ConversionForm::convert()
|
||
|
{
|
||
|
enum MetricUnits {
|
||
|
Kilometers,
|
||
|
Meters,
|
||
|
Centimeters,
|
||
|
Millimeters
|
||
|
};
|
||
|
enum OldUnits {
|
||
|
Miles,
|
||
|
Yards,
|
||
|
Feet,
|
||
|
Inches
|
||
|
};
|
||
|
|
||
|
// Retrieve the input
|
||
|
double input = numberLineEdit->text().toDouble();
|
||
|
double scaledInput = input;
|
||
|
|
||
|
// internally convert the input to millimeters
|
||
|
switch ( fromComboBox->currentItem() ) {
|
||
|
case Kilometers:
|
||
|
scaledInput *= 1000000;
|
||
|
break;
|
||
|
case Meters:
|
||
|
scaledInput *= 1000;
|
||
|
break;
|
||
|
case Centimeters:
|
||
|
scaledInput *= 10;
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
//convert to inches
|
||
|
double result = scaledInput * 0.0393701;
|
||
|
|
||
|
switch ( toComboBox->currentItem() ) {
|
||
|
case Miles:
|
||
|
result /= 63360;
|
||
|
break;
|
||
|
case Yards:
|
||
|
result /= 36;
|
||
|
break;
|
||
|
case Feet:
|
||
|
result /= 12;
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
// set the result
|
||
|
int decimals = decimalsSpinBox->value();
|
||
|
resultLineEdit->setText( QString::number( result, 'f', decimals ) );
|
||
|
numberLineEdit->setText( QString::number( input, 'f', decimals ) );
|
||
|
}
|
||
|
|