QT计算器的功能实现步骤记录
作者:_Aaa小猫香菜批发
使用Qt制作一个简单的计算器应用是一个很好的项目,可以帮助你熟悉Qt框架的图形用户界面(GUI)设计以及基本的事件处理机制,这篇文章主要介绍了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());
else
ui->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());
else
ui->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项目的同学欢迎浏览主页相关文章!
到此这篇关于QT计算器功能实现步骤的文章就介绍到这了,更多相关QT计算器功能内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
