qt开发立体计算器 (qt计算器代码及解释)

qt简易计算器,用qt做一个计算器

今天,我们尝试用Qt实现一个简易的计算器。

1、简易计算器的需求

这个简易的计算器,可以实现如下的功能:

(1)支持用户通过鼠标对计算器进行操作;

(2)支持整数的加减乘除运算;

(3)支持数据清理操作。

2、建立calculator工程

新建Qt Widgets Application,工程名为calculator,基类为QMainWindow:

qt简易计算器,用qt做一个计算器

qt简易计算器,用qt做一个计算器

qt简易计算器,用qt做一个计算器

qt简易计算器,用qt做一个计算器

工程建立后,Qt Creator中的视图为:

qt简易计算器,用qt做一个计算器

3、设计用户界面

在主窗口中添加16个按钮,添加后效果如下:

qt简易计算器,用qt做一个计算器

将主窗口的标题改为“简易计算器”,将按钮的标题改为数字和操作符号,修改后效果如下:

qt简易计算器,用qt做一个计算器

4、设置主窗口的尺寸不可改变

修改main.cpp文件,其中调用主窗口的setFixedSize函数,让窗口的尺寸固定:

#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.setFixedSize(w.width(), w.height());
w.show();
return a*ex.e**c();
}

现在窗口的效果变为:

qt简易计算器,用qt做一个计算器

5、设置数字按键的反应

在MainWindow中添加一个成员函数,实现向行编辑框中添加数字的功能:

void MainWindow::AddNumberToOperand(int i)
{
QString strNumber;
strNumber.setNum(i);
QString strOperand = ui->editOperand->text();
strOperand.append(strNumber);
ui->editOperand->setText(strOperand);
}

然后,为每个数字按键添加鼠标单击的处理函数:

void MainWindow::on_buttonOne_clicked()
{
AddNumberToOperand(1);
}
void MainWindow::on_buttonTwo_clicked()
{
AddNumberToOperand(2);
}
void MainWindow::on_buttonThree_clicked()
{
AddNumberToOperand(3);
}
void MainWindow::on_buttonFour_clicked()
{
AddNumberToOperand(4);
}
void MainWindow::on_buttonFive_clicked()
{
AddNumberToOperand(5);
}
void MainWindow::on_buttonSix_clicked()
{
AddNumberToOperand(6);
}
void MainWindow::on_buttonSeven_clicked()
{
AddNumberToOperand(7);
}
void MainWindow::on_buttonEight_clicked()
{
AddNumberToOperand(8);
}
void MainWindow::on_buttonNine_clicked()
{
AddNumberToOperand(9);
}
void MainWindow::on_buttonZero_clicked()
{
AddNumberToOperand(0);
}

现在简易计算器的效果如下:

qt简易计算器,用qt做一个计算器

6、定义成员变量

在MainWindow类中定义两个成员变量,表示操作数:

private:
int m_iOperand1;
int m_iOperand2;

在MainWindow.h中定义一个枚举类型,表示用户进行的算术操作:

enum{
OPERATOR_ADD = 0,
OPERATOR_MINUS = 1,
OPERATOR_MULTIPLY = 2,
OPERATOR_DIVIDE = 3
};

在MainWindow类中定义一个成员变量,表示算术操作:

private:
int m_iOperator;

7、设置加减乘除按键的反应

当加减乘除任一按键被点击时,设置m_iOperand1和m_iOperator的值,代码如下:

void MainWindow::on_buttonAdd_clicked()
{
m_iOperand1 = ui->editOperand->text().toInt();
m_iOperator = OPERATOR_ADD;
ui->editOperand->setText("");
}
void MainWindow::on_buttonMinus_clicked()
{
m_iOperand1 = ui->editOperand->text().toInt();
m_iOperator = OPERATOR_MINUS;
ui->editOperand->setText("");
}
void MainWindow::on_buttonMultiply_clicked()
{
m_iOperand1 = ui->editOperand->text().toInt();
m_iOperator = OPERATOR_MULTIPLY;
ui->editOperand->setText("");
}
void MainWindow::on_buttonDivide_clicked()
{
m_iOperand1 = ui->editOperand->text().toInt();
m_iOperator = OPERATOR_DIVIDE;
ui->editOperand->setText("");
}

8、设置清除按键的反应

当清除按键被点击时,将行编辑框的值清空,代码如下:

void MainWindow::on_buttonClear_clicked()
{
ui->editOperand->setText("");
}

9、设置等号按键的反应

当等号按键被点击时,将执行计算操作,代码如下:

void MainWindow::on_buttonEqual_clicked()
{
m_iOperand2 = ui->editOperand->text().toInt();
switch (m_iOperator)
{
case OPERATOR_ADD:
m_iOperand1 = m_iOperand1 + m_iOperand2;
break;
case OPERATOR_MINUS:
m_iOperand1 = m_iOperand1 - m_iOperand2;
break;
case OPERATOR_MULTIPLY:
m_iOperand1 = m_iOperand1 * m_iOperand2;
break;
case OPERATOR_DIVIDE:
if (m_iOperand2 != 0)
{
m_iOperand1 = m_iOperand1 / m_iOperand2;
}
break;
}
QString strNumber;
strNumber.setNum(m_iOperand1);
ui->editOperand->setText(strNumber);
}

10、验证程序

至此,我们的简易计算器已经编写完成,下面我们进行调试。

启动程序,界面如下:

qt简易计算器,用qt做一个计算器

输入一个整数,例如120:

qt简易计算器,用qt做一个计算器

点击乘号,点击后界面如下:

qt简易计算器,用qt做一个计算器

再次输入一个整数,例如8:

qt简易计算器,用qt做一个计算器

点击等号,点击后界面如下:

qt简易计算器,用qt做一个计算器

通过验证,我们编写的简易计算器,可以完成简单的加减乘除运算。