QT计算器的功能实现步骤记录

 更新时间:2025年11月11日 08:24:37   作者:_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计算器功能内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C/C++深入讲解内存管理

    C/C++深入讲解内存管理

    本章主要介绍C语言与C++的内存管理,以C++的内存分布作为引入,介绍C++不同于C语言的内存管理方式(new delete对比 malloc free),感兴趣的朋友来看看吧
    2022-05-05
  • opencv实现定时录像功能

    opencv实现定时录像功能

    这篇文章主要为大家详细介绍了opencv实现定时录像功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-06-06
  • C++中纯虚函数的实例详解

    C++中纯虚函数的实例详解

    纯虚函数就是一个在基类中的虚函数,差别只是在一般的虚函数声明的后面加了“=0”,下面这篇文章主要给大家介绍了关于C++中纯虚函数的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-06-06
  • EasyC++单独编译

    EasyC++单独编译

    这篇文章主要介绍了EasyC++单独编译,在上一篇当中,我们编写好了头文件coordin.h,现在我们要完成它的实现。需要的小伙伴可以先学习上一篇内容然后一起与小编一起进入本篇内容一起学习吧
    2021-12-12
  • c++ typeid关键字的使用

    c++ typeid关键字的使用

    这篇文章主要介绍了c++ typeid关键字的使用,帮助大家更好的理解和使用c++,感兴趣的朋友可以了解下
    2020-11-11
  • C语言中杨氏矩阵与杨辉三角的实现方法

    C语言中杨氏矩阵与杨辉三角的实现方法

    这篇文章主要给大家介绍了关于C语言中杨氏矩阵与杨辉三角的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-05-05
  • 老程序员教你一天时间完成C++俄罗斯方块游戏

    老程序员教你一天时间完成C++俄罗斯方块游戏

    俄罗斯方块游戏大家应该非常熟悉,非常经典的一款游戏,本文来详细讲解下俄罗斯方块游戏的制作过程,赶紧来看下吧!希望能给你带来帮助
    2021-08-08
  • C++ Primer Plus详解

    C++ Primer Plus详解

    这篇文章主要为大家详细介绍了C++ Primer Plus,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-02-02
  • C语言实现冒泡排序的思路以及过程

    C语言实现冒泡排序的思路以及过程

    冒泡排序是最简单的排序方法,理解起来容易。虽然它的计算步骤比较多,不是最快的,但它是最基本的,初学者一定要掌握。本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值
    2021-09-09
  • C语言中关于树和二叉树的相关概念

    C语言中关于树和二叉树的相关概念

    这篇文章主要介绍了Java 数据结构之树和二叉树相关资料,文中通过示例代码和一些相关题目来做介绍,非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-02-02

最新评论