柚子快報激活碼778899分享:開發(fā)語言 Qt制作簡易計算器
柚子快報激活碼778899分享:開發(fā)語言 Qt制作簡易計算器
此文章旨在記錄自己學習內(nèi)容,內(nèi)容十分基礎(chǔ),還有許多不完善的地方。本人純小白。大家就當隨便看看。這也是我第一次發(fā)表文章,內(nèi)容冗長,說明不準確也請大家包含 :)
本人用的是Qt Creater 12.0.1(community),安裝過程我就省略了,如果真的想學我丑陋的安裝手法,之后我再出一篇。
因為技術(shù)不成熟,所以該計算器只能計算五位數(shù)整數(shù),且不會顯示小數(shù)。
一、創(chuàng)建項目
1.首先,創(chuàng)建一個項目,然后選擇Qt Widgets Application即可。后續(xù)安裝時,設置名稱(名稱默認為untitled),路徑。
2.在構(gòu)建系統(tǒng)時請選擇CMake。
3.Details處,請在Base class處選擇QWidget
4.在構(gòu)建套件(Kit)中選擇在前兩項即可。
其他的默認設置保持不變
二、設計UI
確認后,創(chuàng)建一個untitled的項目,并打開文件夾,找到widget.ui,開始設計簡易計算器的ui。
我們在左側(cè)的工具欄取用LCD Number作為計算器的顯示器,取用Push Button作為按鈕,取用Line Edit作為文本框,記錄計算時的數(shù)據(jù)。
設計方面我就不多敘述,因為本人設計拿不上臺面...大致情況可如下圖所示:
設計時可用柵格布局,以及全部選中并將水平和垂直策略更改為Expanding。
三、代碼編寫
為了實現(xiàn)計算器,首先需要定義兩個字符串變量a、b。
首先,在頭文件widget.h中找到private處,在內(nèi)部加入聲明。如下所示:
private:
Ui::Widget *ui;
QString a;
QStringList b;
};
#endif // WIDGET_H
之后,開始編寫各個按鍵的代碼,首先編寫數(shù)字鍵。在ui界面右鍵數(shù)字按鍵,并點擊轉(zhuǎn)到槽,選擇clicked(),之后會自動轉(zhuǎn)入到widget.cpp文件處編寫代碼。
1.數(shù)字按鍵設計
此處以數(shù)字0的按鍵進行簡要說明:
void Widget::on_pushButton_14_clicked()?這是Widget類中的一個成員函數(shù),名為on_pushButton_14_clicked。這個函數(shù)是當名為pushButton_14的按鈕被點擊時自動調(diào)用的。 a += "0";??這行代碼將字符串"0"加到變量a的末尾。如果a原先的值是"1",執(zhí)行這行代碼后,a的值將變?yōu)?10"。設計什么數(shù)字按鍵,就更改'" "中的數(shù)字即可。例如:設計數(shù)字7的按鍵,就將"0"改為"7"。 this->ui->lcdNumber->display(a);??這行代碼做了以下幾件事? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (1)this->ui:? 訪問當前對象的UI屬性。? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (2)lcdNumber: 從UI中獲取一個名為lcdNumber的LCD數(shù)字顯示組件。? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (3)->display(a): 將lcdNumber顯示的內(nèi)容設置為變量a的值。因此,如果之前a的值? 是"1230",那么LCD數(shù)字顯示組件將顯示這個值。
void Widget::on_pushButton_14_clicked()
{
a += "0"; //此處更改數(shù)字
this->ui->lcdNumber->display(a);
}
2.算術(shù)運算符按鍵設計
此處以加號進行簡要說明:
void Widget::on_pushButton_8_clicked()?這是Widget類中的一個成員函數(shù),名為on_pushButton_8_clicked。這個函數(shù)是當名為pushButton_8的按鈕被點擊時自動調(diào)用的。b.insert(0,a);??在字符串b的開頭插入字符串a(chǎn)的內(nèi)容。例如,如果a是"10",那么執(zhí)行這行代碼后,b將變?yōu)?10[原始b的內(nèi)容]"。a.clear();??清空字符串a(chǎn)的內(nèi)容,將其變?yōu)榭兆址?。b.insert(1,"+");?在字符串b的第二個位置(索引為1)插入字符"+"。例如,如果b是"123abc",那么執(zhí)行這行代碼后,b將變?yōu)?1+23abc"。設計什么按鍵,就更改'" "中的符號即可。例如:設計除號的按鍵,就將"+"改為"/"。this->ui->lcdNumber->display(a);??這行代碼更新LCD數(shù)字顯示器的顯示內(nèi)容為字符串a(chǎn)的值。但因為在第4行,我們已經(jīng)清空了a的內(nèi)容,所以這里顯示的內(nèi)容應該是空字符串。
void Widget::on_pushButton_8_clicked()
{
b.insert(0,a); // 將字符串a(chǎn)插入到字符串b的首位
a.clear(); // 清空字符串a(chǎn)
b.insert(1,"+"); // 在字符串b的第1個位置插入"+"符號
this->ui->lcdNumber->display(a);
}
3.C鍵清除按鍵設計
void Widget::on_pushButton_7_clicked()?這是Widget類中的一個成員函數(shù),名為on_pushButton_7_clicked。這個函數(shù)是當名為pushButton_7的按鈕被點擊時自動調(diào)用的。b.clear();?清空字符串b的內(nèi)容。? ? ? ? ???a.clear();?清空字符串a(chǎn)的內(nèi)容。this->ui->lcdNumber->display("0");??在一個LCD數(shù)字顯示器上顯示數(shù)字0。ui->lineEdit->setText(" ");??將一個名為lineEdit的文本框的內(nèi)容設置為一個空格。后續(xù)代碼更改lineEdit_2和lineEdit_3文本框內(nèi)容。
void Widget::on_pushButton_7_clicked()
{
b.clear();
a.clear();
this->ui->lcdNumber->display("0");
ui->lineEdit->setText(" "); // 將字符串 'a' 的內(nèi)容設置為文本框的文本
ui->lineEdit_2->setText(" ");
ui->lineEdit_3->setText(" ");
}
4.等于號按建設計
void Widget::on_pushButton_13_clicked()?這是Widget類中的一個成員函數(shù),名為on_pushButton_13_clicked。這個函數(shù)是當名為pushButton_13的按鈕被點擊時自動調(diào)用的。 if (!a.isEmpty() && !b.isEmpty())?檢查字符串變量a和b是否都不為空。 接下來的幾行代碼檢查字符串b的第1個字符是否為加減乘除,并執(zhí)行相應的數(shù)學運算: (1)如果第1個字符是"+",則將第0個和第2個字符轉(zhuǎn)換為整數(shù)并相加。? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (2)如果第1個字符是"-",則將第0個和第2個字符轉(zhuǎn)換為整數(shù)并相減。? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (3)如果第1個字符是"*",則將第0個和第2個字符轉(zhuǎn)換為整數(shù)并相乘。? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (4)如果第1個字符是"/",則將第0個和第2個字符轉(zhuǎn)換為整數(shù)并相除。 this->ui->lcdNumber->display(v3);?在LCD數(shù)字顯示器上顯示計算結(jié)果。 接下來的幾行代碼設置三個文本框的內(nèi)容:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(1)ui->lineEdit->setText(b.at(2));: 設置文本框的內(nèi)容為字符串b的第2個字符。? ? ? ? ? ? ? ?(2)ui->lineEdit_2->setText(b.at(1));: 設置文本框的內(nèi)容為字符串b的第1個字符。? ? ? ? ? ?(3)ui->lineEdit_3->setText(b.at(0));: 設置文本框的內(nèi)容為字符串b的第0個字符。
void Widget::on_pushButton_13_clicked()
{
if (!a.isEmpty() && !b.isEmpty())
{
b.insert(2, a); // 在字符串b的第2個位置插入字符串a(chǎn)
int v3;
if (b.at(1) == "+") // 判斷字符串b的第1個元素是否為"+"
{
v3 = QString(b.at(0)).toInt() + QString(b.at(2)).toInt(); // 將字符串b的第0個和第2個元素轉(zhuǎn)換為整數(shù),并進行加法運算
this->ui->lcdNumber->display(v3);
ui->lineEdit->setText(b.at(2)); // 將字符串 'a' 的內(nèi)容設置為文本框的文本
ui->lineEdit_2->setText(b.at(1));
ui->lineEdit_3->setText(b.at(0));
}
else if (b.at(1) == "-") // 判斷字符串b的第1個元素是否為"-"
{
v3 = QString(b.at(0)).toInt() - QString(b.at(2)).toInt(); // 將字符串b的第0個和第2個元素轉(zhuǎn)換為整數(shù),并進行減法運算
this->ui->lcdNumber->display(v3);
ui->lineEdit->setText(b.at(2));
ui->lineEdit_2->setText(b.at(1));
ui->lineEdit_3->setText(b.at(0));
}
else if (b.at(1) == "*")// 判斷字符串b的第1個元素是否為"*"
{
v3 = QString(b.at(0)).toInt() * QString(b.at(2)).toInt(); // 將字符串b的第0個和第2個元素轉(zhuǎn)換為整數(shù),并進行乘法運算
this->ui->lcdNumber->display(v3);
ui->lineEdit->setText(b.at(2));
ui->lineEdit_2->setText(b.at(1));
ui->lineEdit_3->setText(b.at(0));
}
else if (b.at(1) == "/") // 判斷字符串b的第1個元素是否為"/"
{
v3 = QString(b.at(0)).toInt() / QString(b.at(2)).toInt(); // 將字符串b的第0個和第2個元素轉(zhuǎn)換為整數(shù),并進行除法運算
this->ui->lcdNumber->display(v3);
ui->lineEdit->setText(b.at(2));
ui->lineEdit_2->setText(b.at(1));
ui->lineEdit_3->setText(b.at(0));
}
// 清空a和b,同時將結(jié)果保存到a,以便后續(xù)計算
a = QString::number(v3);
b.clear();
}
else {
b.insert(0, a); // 將字符串a(chǎn)插入到字符串b的首位
a.clear(); // 清空字符串a(chǎn)
}
}
四、運行結(jié)果
完成后點擊右下角的運行,運行結(jié)果如下圖所示:
這篇拙劣的文章就到此結(jié)束了,感謝閱讀qwq
柚子快報激活碼778899分享:開發(fā)語言 Qt制作簡易計算器
相關(guān)鏈接
本文內(nèi)容根據(jù)網(wǎng)絡資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。