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

2. 功能簡介
(1)數(shù)字的加減乘除模運(yùn)算;
(2)對(duì)已輸入的數(shù)字按位刪除功能,一鍵清除功能;
(3)語音播報(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)語音播報(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"); //語言播報(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"); //語言播報(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)目,用到的部件只有按鈕和行編輯器,組成較為簡單,適合入門理解、熟悉QT的編程框架。
2. 想了解更多QT項(xiàng)目的同學(xué)歡迎瀏覽主頁相關(guān)文章!
到此這篇關(guān)于QT計(jì)算器功能實(shí)現(xiàn)步驟的文章就介紹到這了,更多相關(guān)QT計(jì)算器功能內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
數(shù)據(jù)結(jié)構(gòu)順序表操作示例
這篇文章主要介紹了數(shù)據(jù)結(jié)構(gòu)順序表操作示例,其中有在第I個(gè)元素前插入數(shù)據(jù)x,元素從0開始計(jì)數(shù)、刪除第i個(gè)元素,元素從0開始計(jì)數(shù)的方法,需要的朋友可以參考下2014-03-03
Linux下用Valgrind做檢查(防止內(nèi)存泄露)
Valgrind是一款基于模擬linux下的程序調(diào)試器和剖析器的軟件套件,可以運(yùn)行于x86, amd64和ppc32架構(gòu)上。valgrind包含一個(gè)核心,它提供一個(gè)虛擬的CPU運(yùn)行程序,還有一系列的工具,它們完成調(diào)試,剖析和一些類似的任務(wù)2014-01-01
Qt下調(diào)用vlc庫實(shí)現(xiàn)RTSP拉流播放和截圖過程詳解
這篇文章主要為大家介紹了Qt下調(diào)用vlc庫實(shí)現(xiàn)RTSP拉流播放和截圖過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08
C語言數(shù)據(jù)結(jié)構(gòu)中定位函數(shù)Index的使用方法
這篇文章主要介紹了C語言數(shù)據(jù)結(jié)構(gòu)中定位函數(shù)Index的使用方法的相關(guān)資料,希望通過本文能幫助到大家,讓大家理解這部分內(nèi)容,需要的朋友可以參考下2017-10-10

