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(命名看自己心情)
完成後保存並編譯該程序。