QT实现简易计算器(手把手教学)

您所在的位置:网站首页 简易计算器玩枪战游戏的公式是什么 QT实现简易计算器(手把手教学)

QT实现简易计算器(手把手教学)

2024-07-06 20:42| 来源: 网络整理| 查看: 265

        本文章只实现了最最基础的计算器功能,相比起一般的计算器还有些不足,强烈建议读者在阅读完本文章之后,在已经了解的情况下,对其进行优化,如想实现更多功能,建议将LCD控件改为Text edit控件。

废话不多说,先上图:

QT创建项目应该不用多说,在创建项目之后打开Forms目录下的ui文件(双击)

根据自己的喜好和想要实现的功能加入空间,此计算器只使用了Push button控件、LCD number控件,同时记住修改控件对象名称方便记忆使用

此时注意,LCD控件默认只能显示5个数字,因此我们需要进行修改,同时在LCD最多只显示10个数字,在编写代码时我们会对其进行设置

选中lcd控件,在右下侧寻找digitCount选项,修改需要显示的数字,我修改的是12

计算器界面设置好后,就需要我们对其进行信号和槽的编写了

数字键:

右键数字控件,点击转到槽,选择clicked点击事件,跳转到代码界面

因为LCD只显示10位,我们定义一个全局变量cont,然后编程

void MainWindow::on_one_clicked() //数字1的槽函数 { if(cont < 10) //在文件头部定义的全局变量 { int num = ui->evaDisplay->value(); //evaDisplay是我给lcd显示屏的对象名字 num = num * 10 + 1; ui->evaDisplay->display(num); cont++; } }

哪个数字的按键,就在num * 10 + 后面加上对应数字

清空键:

同数字键一样转到槽

void MainWindow::on_clear_clicked() { ui->evaDisplay->display(0); cont = 0; }

运算符键:

同数字键一样转到槽

通过观察计算器我们可以发现,一般的计算器是在输入一串数字后,点击运算符时,显示屏清空,此时输入第二串数字,最后点击等于才会出现结果,因此我们在点击运算符时,使用全局变量num1存储第一次的值,全局变量res存储哪个运算的操作。

void MainWindow::on_myAdd_clicked() //+号 { num1 = ui->evaDisplay->value(); on_clear_clicked(); //清空键 res = 1; }

等于键:

读取res获取当前操作

void MainWindow::on_result_clicked() { switch (res) { case 1: //+ num2 = ui->evaDisplay->value(); ui->evaDisplay->display(num1 + num2); break; case 2: //- num2 = ui->evaDisplay->value(); ui->evaDisplay->display(num1 - num2); break; case 3: //* num2 = ui->evaDisplay->value(); ui->evaDisplay->display(num1 * num2); break; case 4: //“/” num2 = ui->evaDisplay->value(); ui->evaDisplay->display(num1 / num2); break; case 5: //% num2 = ui->evaDisplay->value(); ui->evaDisplay->display(num1 % num2); break; } }

退格键:

每次退格会重新计算cont,因为前面未对cont上限进行限制,避免cont溢出,导致LCD显示数量变化

void MainWindow::on_point_clicked() { int num = ui->evaDisplay->value(); cont = 0; ui->evaDisplay->display(num / 10); num /= 10; while(num != 0) { num /= 10; cont++; //qDebug() setupUi(this); } MainWindow::~MainWindow() { delete ui; } void MainWindow::on_one_clicked() { if(cont < 10) { int num = ui->evaDisplay->value(); num = num * 10 + 1; //num = static_cast(num); ui->evaDisplay->display(num); cont++; } } void MainWindow::on_two_clicked() { cont++; if(cont < 10) { int num = ui->evaDisplay->value(); num = num * 10 + 2; ui->evaDisplay->display(num); } } void MainWindow::on_three_clicked() { cont++; if(cont < 10) { int num = ui->evaDisplay->value(); num = num * 10 + 3; ui->evaDisplay->display(num); } } void MainWindow::on_four_clicked() { cont++; if(cont < 10) { int num = ui->evaDisplay->value(); num = num * 10 + 4; ui->evaDisplay->display(num); } } void MainWindow::on_five_clicked() { cont++; if(cont < 10) { int num = ui->evaDisplay->value(); num = num * 10 + 5; ui->evaDisplay->display(num); } } void MainWindow::on_six_clicked() { cont++; if(cont < 10) { int num = ui->evaDisplay->value(); num = num * 10 + 6; ui->evaDisplay->display(num); } } void MainWindow::on_seven_clicked() { cont++; if(cont < 10) { int num = ui->evaDisplay->value(); num = num * 10 + 7; ui->evaDisplay->display(num); } } void MainWindow::on_eight_clicked() { cont++; if(cont < 10) { int num = ui->evaDisplay->value(); num = num * 10 + 8; ui->evaDisplay->display(num); } } void MainWindow::on_nine_clicked() { cont++; if(cont < 10) { int num = ui->evaDisplay->value(); num = num * 10 + 9; ui->evaDisplay->display(num); } } void MainWindow::on_zero_clicked() { if(cont < 10) { int num = ui->evaDisplay->value(); num = num * 10 + 0; ui->evaDisplay->display(num); if(num != 0) {cont++;} } } void MainWindow::on_clear_clicked() { ui->evaDisplay->display(0); cont = 0; } void MainWindow::on_myAdd_clicked() { num1 = ui->evaDisplay->value(); on_clear_clicked(); res = 1; } void MainWindow::on_myDowns_clicked() { num1 = ui->evaDisplay->value(); on_clear_clicked(); res = 2; } void MainWindow::on_myBy_clicked() { num1 = ui->evaDisplay->value(); on_clear_clicked(); res = 3; } void MainWindow::on_myExcept_clicked() { num1 = ui->evaDisplay->value(); on_clear_clicked(); res = 4; } void MainWindow::on_moreThan_clicked() { num1 = ui->evaDisplay->value(); on_clear_clicked(); res = 5; } void MainWindow::on_result_clicked() { switch (res) { case 1: num2 = ui->evaDisplay->value(); ui->evaDisplay->display(num1 + num2); break; case 2: num2 = ui->evaDisplay->value(); ui->evaDisplay->display(num1 - num2); break; case 3: num2 = ui->evaDisplay->value(); ui->evaDisplay->display(num1 * num2); break; case 4: num2 = ui->evaDisplay->value(); ui->evaDisplay->display(num1 / num2); break; case 5: num2 = ui->evaDisplay->value(); ui->evaDisplay->display(num1 % num2); break; } } void MainWindow::on_point_clicked() { int num = ui->evaDisplay->value(); cont = 0; ui->evaDisplay->display(num / 10); num /= 10; while(num != 0) { num /= 10; cont++; //qDebug()


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3