0、前言
技术经济学这门课是上学期开的,从一开始我就在怀疑,我一个学修拖拉机的,学这么复杂的经济学知识有啥用,直到发现这门课的计算量不小,如果用常规的科学计算器,算起来还是比较麻烦(你喜欢用复利系数表就当我没说),特别是有些题需要逆推的时候,然后我就用C++在VS里面写了一个没有交互界面,只用COUT和CIN所构成的简易计算器,一定程度缓解了按计算器的压力。在大致学习了QT后,决心用QT做一个简易的计算器,于是有了本文,需要注意的是,由于时间过去蛮久,加上第一版无交互界面的程序在学校电脑,所以QT构建的计算器,缺少NPV、NAV、IRR、线性插值等计算功能,返校后有空会二次更新。
1、View部分
左下方为6个RadioButto所组成的ButtonGroup,并设置为互斥,objectName设置为(rb_1~rb_6)
输入框由lineEdit组成,输出框为textBrowser。
2、Control部分
2.1、获取单选框数据
这里直接使用“计算”按钮事件
//检查哪个单选框被按下
QString Type= this->ui->TypeGroup->checkedButton()->objectName();
//再通过if进行判断选择的按钮
if(Type=="rb_1")//P求F
2.2、获取lineEdit数据
因为输入的数据本身是str型,需要转换为可用于计算的类型
//获取输入值
long double A= this->ui->lineEdit_A->text().toFloat();
long double P =this->ui->lineEdit_P->text().toFloat();
long double F =this->ui->lineEdit_F->text().toFloat();
float i =this->ui->lineEdit_I->text().toFloat();
i=i*0.01;
int n =this->ui->lineEdit_N->text().toInt();
2.3、清屏&清除数据
//清空屏幕
void MainWindow::on_ClcButton_clicked()
{
this->ui->textBrowser->clear();
}
//清除label中的数据
void MainWindow::on_ClcData_clicked()
{
this->ui->lineEdit_P->clear();
this->ui->lineEdit_F->clear();
this->ui->lineEdit_I->clear();
this->ui->lineEdit_N->clear();
this->ui->lineEdit_A->clear();
PCount=0;//自增自减计算使用
}
3、model部分
计算需要添加以下头文件
#include <QtCore/qmath.h>
3.1、计算
if(Type=="rb_1")//P求F
{
//F=P*((1+i)^n)
i=qPow((1+i),n);//指数计算
F=P*i;
QString res="已知P求F:周期n="+this->ui->lineEdit_N->text()+" F=";//设定输出格式
res+= QString::number(F,10,2);//将F转换为字符型,十进制,保留两位小数
this->ui->textBrowser->append(res);//换行输出
}
3.2、自增计算
该计算主要为了计算不同周期下的结果,可以自增和自减,通过定义一个全局变量
int PCount=0;
后对应的计算函数中,获取到输入的n周期值后
int PCC=PCount+n;
if(Type=="rb_1")//P求F
{
i=qPow((1+i),PCC);
F=P*i;
QString res="已知P求F:周期n="+QString::number(PCC,10)+" F=";
res+= QString::number(F,10,2);//将F转换为字符型,保留两位小数
this->ui->textBrowser->append(res);//换行输出
}
并在j计算程序函数的末尾添加
PCount++
4、添加Logo
需要先将自己的logo转化为ico文件,可以使用在线转换
将ico文件放到工程文件下,并新建一个txt文本,改名为xxx.rc
再次编辑该rc文件,写入一下内容,并保存(app为ico图文件名)
IDI_ICON1 ICON DISCARDABLE "app.ico"
随后在QT工程的pro文件中写入,刚刚编辑的xxx.rc(命名看自己心情)
完成后保存并编译该程序。