QT:计算器的功能实现
1. 成果UI界面预览

2. 功能简介
(1)数字的加减乘除模运算;
(2)对已输入的数字按位删除功能,一键清除功能;
(3)语音播报:实时播报输入的按键。
3. 实现步骤
1. 创建一个带ui文件的Widget项目
2. 自由设计ui界面
需用到若干按钮(pushButton)和两个行编辑器(lineEdit)
按钮的样式表
设置样式表:选中按钮 -> 右键 -> 改变样式表 -> 输入代码(提供按钮样式表代码如下以供参考)
QPushButton
{background-color: rgb(255, 170, 0);color: rgb(255, 255, 255);border-radius:10px; /*边框角弧度:0~最小边/2 px;*/
}
/*鼠标悬停样式:伪状态选择*/
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. 完成各个按键的槽函数
生成槽函数步骤:选中按钮 -> 右键 -> 转到槽
(1)语音播报功能的实现
添加头文件 #include <QtTextToSpeech> -> 定义私有成员变量 QTextToSpeech speaker; -> 在按钮槽函数中使用(在下方的槽函数中实现)
(2)0-9数字按钮
以数字按钮1、2为例,槽函数以及代码实现如下(其他数字按钮槽函数实现方式相同,只需更换按钮名字)
void Widget::on_btnNum_1_clicked()
{speaker.say("1"); //语言播报if(ui->lineEdit_show->text() == "0") //避免出现0开头的数字ui->lineEdit_show->setText(ui->btnNum_1->text());elseui->lineEdit_show->setText(ui->lineEdit_show->text() + ui->btnNum_1->text());
}void Widget::on_btnNum_2_clicked()
{speaker.say("2"); //语言播报if(ui->lineEdit_show->text() == "0") //避免出现0开头的数字ui->lineEdit_show->setText(ui->btnNum_2->text());elseui->lineEdit_show->setText(ui->lineEdit_show->text() + ui->btnNum_2->text());
}
(3)运算符按钮
以数字按钮 “ 点 ”、“ 加 ”运算符为例,槽函数以及代码实现如下(其他运算符按钮槽函数实现方式相同,只需更换按钮名字)
void Widget::on_btnOpe_point_clicked()
{speaker.say("点");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(); //获取用户输入的运算表达式ui->lineEdit_result->setText(data); //将表达式备份到另一个行编辑器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("删除");// 获取当前文本框内容QString currentText = ui->lineEdit_show->text();if (!currentText.isEmpty()){// 删除最后一个字符currentText.chop(1);// 更新文本框内容ui->lineEdit_show->setText(currentText);}
}void Widget::on_btnClear_clicked()
{speaker.say("清空");ui->lineEdit_show->clear();
}
4. 总结
1. 计算器是很适合QT入门的练手小项目,用到的部件只有按钮和行编辑器,组成较为简单,适合入门理解、熟悉QT的编程框架。
2. 想了解更多QT项目的同学欢迎浏览主页相关文章!
感谢观看!如有疑问欢迎提出!
----香菜小猫祝这位uu天天开心----
