当前位置: 首页 > news >正文

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天天开心----

http://www.dtcms.com/a/593661.html

相关文章:

  • 东莞市 住房与城乡建设部网站简述网络推广的方法
  • FPGA系统架构设计实践4_SelectIO
  • 2025年--Lc232-LCR 019. 验证回文串 II-Java版
  • 马鞍山做网站的建投能源公司简介
  • 【C++进阶】STL-string的简单实现
  • 网站拒绝了您的访问电商网站开发环境
  • Kimi K2-Thinking的路线,有待商榷
  • 微信网站名云服务器哪家好
  • 热电式传感器
  • 在 Ubuntu 上部署 Docker Swarm 集群(完整指南)
  • 网站开发需要代码吗百度推广落地页
  • C++中测试无锁队列的正确性和性能
  • seo网站快速排名网站的按钮怎么做 视频
  • TortoiseSVN客户端(小乌龟)安装与使用
  • “十防”标准的技术赋能:基于传感器网络的档案环境精准调控研究
  • 建设网站教程视频视频房地产店铺首页设计过程
  • SQL 注入复习
  • 网站开发工具有哪些wordpress网址跳转
  • Uni微信小程序如何对接百度翻译
  • 蓝牙钥匙 第77次 蓝牙与边缘计算融合:重新定义物联网的智能边界
  • CodexField 如何构建自增长的内容资产生态?
  • 逻辑服务编排的定义变量,将数据和逻辑解耦,配置化实现数据驱动流程!
  • 代码随想录 Q89.跳跃游戏Ⅱ
  • 那个网站是专门做渔具的网站设计与建设难吗
  • Bootstrap4 导航栏
  • ESLint: Expected indentation of * spaces but found *. (style/indent)
  • 前端根据文件后缀名智能识别文件类型的实用函数
  • 文山 网站建设 滇icp成都优化官网推广
  • 线性代数 - 矩阵乘法能换括号,不能换顺序;满足结合律,不满足交换律
  • ScaleRL:掌握大语言模型强化学习的规模化艺术