前言:
关于软件:

一、
拖拽若干个Push Batton、1个lineEdit等组件到窗口中,
按钮进行栅格布局;并修改其显示值(text)、组件属性:水平策略和垂直策略为Expanding
如下图:

二、
选择某按键组件,右击后选择“转到槽”,再选择clicked,ok后,自动转到cpp文件中槽函数。
该槽函数是由Qt自动创建和定义的空函数,已和该按键clicked信号连接,我们只需要编写其内部代码即可。

三、cpp代码
#include "counter.h"
#include "ui_counter.h"
Counter::Counter(QWidget *parent) :
QWidget(parent),
ui(new Ui::Counter)
{
ui->setupUi(this);
setFixedSize(350,480); //画布大小设定
ui->operateEdit->setText(tr("0")); //文本框显示0
input1="0";
input2="0";
operate='0';
ui->operateEdit ->setAlignment(Qt::AlignRight);
ui->operateEdit->setFont(QFont( "Timers" , 28 , QFont::Bold) );
}
void Counter::on_num1_clicked()
{
if(ui->operateEdit->text()=="0")
ui->operateEdit->setText("");
input2=ui->operateEdit->text(); //把当前显示内容保存到input2
input2.append(tr("1"));
ui->operateEdit->setText(input2);
}
void Counter::on_num2_clicked()
{
if(ui->operateEdit->text()=="0")
ui->operateEdit->setText("");
input2=ui->operateEdit->text(); //把当前显示内容保存到input2
input2.append(tr("2"));
ui->operateEdit->setText(input2);
}
void Counter::on_num3_clicked()
{
if(ui->operateEdit->text()=="0")
ui->operateEdit->setText("");
input2=ui->operateEdit->text(); //把当前显示内容保存到input2
input2.append(tr("3"));
ui->operateEdit->setText(input2);
}
void Counter::on_dengyu_clicked()
{
float num1,num2;
input2=ui->operateEdit->text();
if (operate=='0')
{
input1=input2;
operate='0';
}
else
{
num2=input2.toFloat();
num1=input1.toFloat();
switch(operate)
{
case '+': num1=num1+num2;break;
case '-': num1=num1-num2;break;
case '*': num1=num1*num2;break;
case '/': num1=num1/num2;break;
default: num1=0;
}
input2=QString::number(num1) ;
operate='0';
}
ui->operateEdit->setText(input2);
}
void Counter::on_num4_clicked()
{
if(ui->operateEdit->text()=="0")
ui->operateEdit->setText("");
input2=ui->operateEdit->text(); //把当前显示内容保存到input2
input2.append(tr("4"));
ui->operateEdit->setText(input2);
}
void Counter::on_num5_clicked()
{
if(ui->operateEdit->text()=="0")
ui->operateEdit->setText("");
input2=ui->operateEdit->text(); //把当前显示内容保存到input2
input2.append(tr("5"));
ui->operateEdit->setText(input2);
}
void Counter::on_num6_clicked()
{
if(ui->operateEdit->text()=="0")
ui->operateEdit->setText("");
input2=ui->operateEdit->text(); //把当前显示内容保存到input2
input2.append(tr("6"));
ui->operateEdit->setText(input2);
}
void Counter::on_num7_clicked()
{
if(ui->operateEdit->text()=="0")
ui->operateEdit->setText("");
input2=ui->operateEdit->text(); //把当前显示内容保存到input2
input2.append(tr("7"));
ui->operateEdit->setText(input2);
}
void Counter::on_num8_clicked()
{
if(ui->operateEdit->text()=="0")
ui->operateEdit->setText("");
input2=ui->operateEdit->text(); //把当前显示内容保存到input2
input2.append(tr("8"));
ui->operateEdit->setText(input2);
}
void Counter::on_num9_clicked()
{
if(ui->operateEdit->text()=="0")
ui->operateEdit->setText("");
input2=ui->operateEdit->text(); //把当前显示内容保存到input2
input2.append(tr("9"));
ui->operateEdit->setText(input2);
}
void Counter::on_num0_clicked()
{
if (input2=="0") { //当前显示内容为0,则再输入0时,只显示一个0
input2="0";
}
else {
input2=ui->operateEdit->text(); //把当前显示内容保存到input2
input2.append(tr("0")); //调用append函数,在input2后添加输入内容0
}
ui->operateEdit->setText(input2);
}
void Counter::on_C_clicked()
{
ui->operateEdit->setText("0");
}
void Counter::on_DEL_clicked()
{
input2.chop(1);
ui->operateEdit->setText(input2);
if(ui->operateEdit->text()==NULL)//如果删吧 除完数则显示0
ui->operateEdit->setText("0");
}
void Counter::on_add_clicked()
{
input1=ui->operateEdit->text();
operate='+';
input2="0";
ui->operateEdit->setText(input2);
}
void Counter::on_app_clicked()
{
input1=ui->operateEdit->text();
operate='-';
input2="0";
ui->operateEdit->setText(input2);
}
Counter::~Counter()
{
delete ui;
}
void Counter::on_ride_clicked()
{
input1=ui->operateEdit->text();
operate='*';
input2="0";
ui->operateEdit->setText(input2);
}
void Counter::on_division_clicked()
{
input1=ui->operateEdit->text();
operate='/';
input2="0";
ui->operateEdit->setText(input2);
}
void Counter::on_off_clicked()
{
close();
}
void Counter::on_pai_clicked()
{
ui->operateEdit->setText("3.141592654");
}
四、.h代码
#ifndef COUNTER_H
#define COUNTER_H
#include<QtWidgets>
namespace Ui {
class Counter;
}
class Counter : public QWidget
{
Q_OBJECT
public:
explicit Counter(QWidget *parent = 0);
~Counter();
private slots:
void on_num1_clicked();
void on_num2_clicked();
void on_num3_clicked();
void on_dengyu_clicked();
void on_num4_clicked();
void on_num5_clicked();
void on_num6_clicked();
void on_num7_clicked();
void on_num8_clicked();
void on_num9_clicked();
void on_num0_clicked();
void on_C_clicked();
void on_DEL_clicked();
void on_add_clicked();
void on_app_clicked();
void on_ride_clicked();
void on_division_clicked();
void on_off_clicked();
void on_pai_clicked();
private:
Ui::Counter *ui;
QString input1;
QString input2;
char operate;
};
#endif // COUNTER_H
五、运行
例:999+1
