最近因为工作原因接触到QT,学了两天,写了个简单的计算器,还有很多bug没有经过处理,有空的话会进行完善下,因为在下是刚刚学习的菜鸟,有很多不足之处请多多指教啊:
主要的核心是将多次输入的数据利用strcat进行拼接,利用strtok将数据分开,然后进行算法返回结果.
主要实现功能:
实现整形和浮点型的加减乘除.
以下是源代码:
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include<strings.h>
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
#include<iostream>
using namespace std;
extern char buf[30];
extern char buf1[30];
extern int flag;
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
float handle1(char *buff,int flag);
private slots:
void on_pushButton_clicked();
void on_pushButton_2_clicked();
void on_pushButton_3_clicked();
void on_pushButton_6_clicked();
void on_pushButton_7_clicked();
void on_pushButton_8_clicked();
void on_pushButton_9_clicked();
void on_pushButton_15_clicked();
void on_pushButton_16_clicked();
void on_pushButton_10_clicked();
void on_pushButton_12_clicked();
void on_pushButton_4_clicked();
void on_pushButton_11_clicked();
void on_pushButton_13_clicked();
void on_pushButton_14_clicked();
void on_pushButton_5_clicked();
void on_pushButton_17_clicked();
private:
Ui::MainWindow *ui;
char buf[30];
int flag;
};
#endif // MAINWINDOW_H
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
strcpy(buf,"");
flag=0;
}
MainWindow::~MainWindow()
{
delete ui;
}
float MainWindow::handle1(char *buff,int flag)
{
char first[15]="";
char seconed[15]="";
float sum=0;
if(flag==1)
{
char *result=strtok(buff,"+");
strcpy(first,result);
result=strtok(NULL,"+");
strcpy(seconed,result);
sum=atof(first)+atof(seconed);
}
if(flag==2)
{
char *result=strtok(buff,"-");
strcpy(first,result);
result=strtok(NULL,"-");
strcpy(seconed,result);
sum=atof(first)-atof(seconed);
}
if(flag==3)
{
char *result=strtok(buff,"*");
strcpy(first,result);
result=strtok(NULL,"*");
strcpy(seconed,result);
sum=atof(first)*atof(seconed);
}
if(flag==4)
{
char *result=strtok(buff,"/");
strcpy(first,result);
result=strtok(NULL,"/");
strcpy(seconed,result);
sum=atof(first)/atof(seconed);
}
return sum;
}
void MainWindow::on_pushButton_clicked()
{
strcat(buf,"1"); ui->lineEdit->setText(buf);
}
void MainWindow::on_pushButton_2_clicked()
{
strcat(buf,"2"); ui->lineEdit->setText(buf);
}
void MainWindow::on_pushButton_3_clicked()
{
strcat(buf,"3"); ui->lineEdit->setText(buf);
}
void MainWindow::on_pushButton_6_clicked()
{
strcat(buf,"4"); ui->lineEdit->setText(buf);
}
void MainWindow::on_pushButton_7_clicked()
{
strcat(buf,"5"); ui->lineEdit->setText(buf);
}
void MainWindow::on_pushButton_8_clicked()
{
strcat(buf,"6"); ui->lineEdit->setText(buf);
}
void MainWindow::on_pushButton_9_clicked()
{
strcat(buf,"7"); ui->lineEdit->setText(buf);
}
void MainWindow::on_pushButton_15_clicked()
{
strcat(buf,"8"); ui->lineEdit->setText(buf);
}
void MainWindow::on_pushButton_16_clicked()
{
strcat(buf,"9"); ui->lineEdit->setText(buf);
}
void MainWindow::on_pushButton_5_clicked()
{
strcat(buf,"."); ui->lineEdit->setText(buf);
}
void MainWindow::on_pushButton_17_clicked()
{
strcat(buf,"0"); ui->lineEdit->setText(buf);
}
// =
void MainWindow::on_pushButton_12_clicked()
{
strcat(buf,"=");
ui->lineEdit->setText(buf);
float sum=handle1(buf,flag);
// QString t=QString::number(sum,10); //10进制
QString t = QString("%1").arg(sum);
ui->lineEdit->setText(t);
strcpy(buf,"");
}
// +
void MainWindow::on_pushButton_10_clicked()
{
flag=1;
strcat(buf,"+"); ui->lineEdit->setText(buf);
}
// -
void MainWindow::on_pushButton_11_clicked()
{
flag=2;
strcat(buf,"-"); ui->lineEdit->setText(buf);
}
// *
void MainWindow::on_pushButton_13_clicked()
{
flag=3;
strcat(buf,"*"); ui->lineEdit->setText(buf);
}
// /
void MainWindow::on_pushButton_14_clicked()
{
flag=4;
strcat(buf,"/"); ui->lineEdit->setText(buf);
}
void MainWindow::on_pushButton_4_clicked()
{
ui->lineEdit->setText("0");
strcpy(buf,"");
}