前几天老师简单的讲解了下QT的信号与槽,并且实现了一个简单的计算机加法,如下图:
我根据对老师所讲类容的理解以及一些资料的查找自己做了一个简单的计算器。
1 首先上个界面,页面布局用Grid Layout。
2 建立各种槽,代码如下:
mainwindow.h文件代码:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void on_btAC_clicked();
void on_btADdd_clicked();
void on_bt0_clicked();
void on_bt1_clicked();
void on_bt2_clicked();
void on_bt3_clicked();
void on_bt4_clicked();
void on_bt5_clicked();
void on_bt6_clicked();
void on_bt7_clicked();
void on_bt8_clicked();
void on_bt9_clicked();
void on_btJian_clicked();
void on_btCheng_clicked();
void on_btChu_clicked();
void on_btValue_clicked();
public:
void display();
private:
Ui::MainWindow *ui;
QString currentNumber;
QString lastNumber;
int ans=0;
};
#endif // MAINWINDOW_H
mainwindow.cpp文件代码:
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
//label显示当前值
void MainWindow::display()
{
ui->label->setText(currentNumber);
}
//清除
void MainWindow::on_btAC_clicked()
{
currentNumber = "0";
lastNumber = "0";
ans = 0;
display();
}
//添加阿拉伯数字
void MainWindow::on_bt0_clicked()
{
if(currentNumber == "0")
currentNumber.clear();
currentNumber += "0";
display();
}
void MainWindow::on_bt1_clicked()
{
if(currentNumber == "0")
currentNumber.clear();
currentNumber += "1";
display();
}
void MainWindow::on_bt2_clicked()
{
if(currentNumber == "0")
currentNumber.clear();
currentNumber += "2";
display();
}
void MainWindow::on_bt3_clicked()
{
if(currentNumber == "0")
currentNumber.clear();
currentNumber += "3";
display();
}
void MainWindow::on_bt4_clicked()
{
if(currentNumber == "0")
currentNumber.clear();
currentNumber += "4";
display();
}
void MainWindow::on_bt5_clicked()
{
if(currentNumber == "0")
currentNumber.clear();
currentNumber += "5";
display();
}
void MainWindow::on_bt6_clicked()
{
if(currentNumber == "0")
currentNumber.clear();
currentNumber += "6";
display();
}
void MainWindow::on_bt7_clicked()
{
if(currentNumber == "0")
currentNumber.clear();
currentNumber += "7";
display();
}
void MainWindow::on_bt8_clicked()
{
if(currentNumber == "0")
currentNumber.clear();
currentNumber += "8";
display();
}
void MainWindow::on_bt9_clicked()
{
if(currentNumber == "0")
currentNumber.clear();
currentNumber += "9";
display();
}
//添加操作符
//加法
void MainWindow::on_btADdd_clicked()
{
lastNumber = currentNumber;
currentNumber.clear();
ans = 1;
}
//减法
void MainWindow::on_btJian_clicked()
{
lastNumber = currentNumber;
currentNumber.clear();
ans = 2;
}
//乘法
void MainWindow::on_btCheng_clicked()
{
lastNumber = currentNumber;
currentNumber.clear();
ans = 3;
}
//除法
void MainWindow::on_btChu_clicked()
{
lastNumber = currentNumber;
currentNumber.clear();
ans = 4;
}
//等号显示
void MainWindow::on_btValue_clicked()
{
if(ans==1)
{
int a = currentNumber.toInt() + lastNumber.toInt();
currentNumber = QString::number(a,10);
ui->label->setText(currentNumber);
}
if(ans==2)
{
int a = lastNumber.toInt() - currentNumber.toInt();
currentNumber = QString::number(a,10);
ui->label->setText(currentNumber);
}
if(ans==3)
{
int a = currentNumber.toInt() * lastNumber.toInt();
currentNumber = QString::number(a,10);
ui->label->setText(currentNumber);
}
if(ans==4)
{
int a = lastNumber.toInt();
int b= currentNumber.toInt();
double c = (double)a/b;
currentNumber = QString::number(c);
ui->label->setText(currentNumber);
}
}
这次计算器实现的功能比较单一,只有简单的加减乘除,在以后的学习中我会继续添加完善功能。