QT計(jì)算器的功能實(shí)現(xiàn)步驟記錄
1. 成果UI界面預(yù)覽

2. 功能簡(jiǎn)介
(1)數(shù)字的加減乘除模運(yùn)算;
(2)對(duì)已輸入的數(shù)字按位刪除功能,一鍵清除功能;
(3)語(yǔ)音播報(bào):實(shí)時(shí)播報(bào)輸入的按鍵。
3. 實(shí)現(xiàn)步驟
1. 創(chuàng)建一個(gè)帶ui文件的Widget項(xiàng)目
2. 自由設(shè)計(jì)ui界面
需用到若干按鈕(pushButton)和兩個(gè)行編輯器(lineEdit)
按鈕的樣式表
設(shè)置樣式表:選中按鈕 -> 右鍵 -> 改變樣式表 -> 輸入代碼(提供按鈕樣式表代碼如下以供參考)
QPushButton
{
background-color: rgb(255, 170, 0);
color: rgb(255, 255, 255);
border-radius:10px; /*邊框角弧度:0~最小邊/2 px;*/
}
/*鼠標(biāo)懸停樣式:偽狀態(tài)選擇*/
QPushButton:hover
{
font: 700 9pt "Microsoft YaHei UI";
background-color: rgb(46, 46, 46);
color: rgb(255, 255, 255);
border-radius:10px; /*邊框角弧度:0~最小邊/2 px;*/
}3. 完成各個(gè)按鍵的槽函數(shù)
生成槽函數(shù)步驟:選中按鈕 -> 右鍵 -> 轉(zhuǎn)到槽
(1)語(yǔ)音播報(bào)功能的實(shí)現(xiàn)
添加頭文件 #include <QtTextToSpeech> -> 定義私有成員變量 QTextToSpeech speaker; -> 在按鈕槽函數(shù)中使用(在下方的槽函數(shù)中實(shí)現(xiàn))
(2)0-9數(shù)字按鈕
以數(shù)字按鈕1、2為例,槽函數(shù)以及代碼實(shí)現(xiàn)如下(其他數(shù)字按鈕槽函數(shù)實(shí)現(xiàn)方式相同,只需更換按鈕名字)
void Widget::on_btnNum_1_clicked()
{
speaker.say("1"); //語(yǔ)言播報(bào)
if(ui->lineEdit_show->text() == "0") //避免出現(xiàn)0開頭的數(shù)字
ui->lineEdit_show->setText(ui->btnNum_1->text());
else
ui->lineEdit_show->setText(ui->lineEdit_show->text() + ui->btnNum_1->text());
}
void Widget::on_btnNum_2_clicked()
{
speaker.say("2"); //語(yǔ)言播報(bào)
if(ui->lineEdit_show->text() == "0") //避免出現(xiàn)0開頭的數(shù)字
ui->lineEdit_show->setText(ui->btnNum_2->text());
else
ui->lineEdit_show->setText(ui->lineEdit_show->text() + ui->btnNum_2->text());
}(3)運(yùn)算符按鈕
以數(shù)字按鈕 “ 點(diǎn) ”、“ 加 ”運(yùn)算符為例,槽函數(shù)以及代碼實(shí)現(xiàn)如下(其他運(yùn)算符按鈕槽函數(shù)實(shí)現(xiàn)方式相同,只需更換按鈕名字)
void Widget::on_btnOpe_point_clicked()
{
speaker.say("點(diǎn)");
if (ui->lineEdit_show->text().isEmpty())
{ return; }
ui->lineEdit_show->setText(ui->lineEdit_show->text() + ui->btnOpe_point->text());
}
void Widget::on_btnOpe_add_clicked()
{
speaker.say("加");
if (ui->lineEdit_show->text().isEmpty())
{ return; }
ui->lineEdit_show->setText(ui->lineEdit_show->text() + ui->btnOpe_add->text());
}(4)等于按鈕
void Widget::on_btnOpe_equal_clicked()
{
speaker.say("等于");
QString data = ui->lineEdit_show->text(); //獲取用戶輸入的運(yùn)算表達(dá)式
ui->lineEdit_result->setText(data); //將表達(dá)式備份到另一個(gè)行編輯器
float res = 0, a, b;
if(data.contains("%"))
{
QStringList lst = data.split("%");
a = lst[0].toFloat();
b = lst[1].toFloat();
res = int(a) % int (b);
}
if(data.contains("+"))
{
a = data.split("+")[0].toFloat();
b = data.split("+")[1].toFloat();
res = a + b;
}
if(data.contains("-"))
{
a = data.split("-")[0].toFloat();
b = data.split("-")[1].toFloat();
res = a - b;
}
if(data.contains("×"))
{
a = data.split("×")[0].toFloat();
b = data.split("×")[1].toFloat();
res = a * b;
}
if(data.contains("÷"))
{
a = data.split("÷")[0].toFloat();
b = data.split("÷")[1].toFloat();
res = a / b;
}
ui->lineEdit_show->setText(QString("%1").arg(res)); //%1為占位符
}(5)按位刪除、清空按鈕
void Widget::on_btnOpe_del_clicked()
{
speaker.say("刪除");
// 獲取當(dāng)前文本框內(nèi)容
QString currentText = ui->lineEdit_show->text();
if (!currentText.isEmpty())
{
// 刪除最后一個(gè)字符
currentText.chop(1);
// 更新文本框內(nèi)容
ui->lineEdit_show->setText(currentText);
}
}
void Widget::on_btnClear_clicked()
{
speaker.say("清空");
ui->lineEdit_show->clear();
}
4. 總結(jié)
1. 計(jì)算器是很適合QT入門的練手小項(xiàng)目,用到的部件只有按鈕和行編輯器,組成較為簡(jiǎn)單,適合入門理解、熟悉QT的編程框架。
2. 想了解更多QT項(xiàng)目的同學(xué)歡迎瀏覽主頁(yè)相關(guān)文章!
到此這篇關(guān)于QT計(jì)算器功能實(shí)現(xiàn)步驟的文章就介紹到這了,更多相關(guān)QT計(jì)算器功能內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
opencv實(shí)現(xiàn)定時(shí)錄像功能
這篇文章主要為大家詳細(xì)介紹了opencv實(shí)現(xiàn)定時(shí)錄像功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-06-06
C語(yǔ)言中楊氏矩陣與楊輝三角的實(shí)現(xiàn)方法
這篇文章主要給大家介紹了關(guān)于C語(yǔ)言中楊氏矩陣與楊輝三角的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05
C語(yǔ)言實(shí)現(xiàn)冒泡排序的思路以及過(guò)程
冒泡排序是最簡(jiǎn)單的排序方法,理解起來(lái)容易。雖然它的計(jì)算步驟比較多,不是最快的,但它是最基本的,初學(xué)者一定要掌握。本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值2021-09-09
C語(yǔ)言中關(guān)于樹和二叉樹的相關(guān)概念
這篇文章主要介紹了Java?數(shù)據(jù)結(jié)構(gòu)之樹和二叉樹相關(guān)資料,文中通過(guò)示例代碼和一些相關(guān)題目來(lái)做介紹,非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-02-02

