QT入门小程序(简单计算器):
1.首先看下运行界面:
界面布局参考这个:点击这里
由于某些键不知道具体的作用是什么,所以就没有实习点击对应的槽函数,(这些键包括GT 单位 MC MR M-/下调 M+/上调 CE 和AC ) -->键 和 % 号键都实现的删除功能(win7 自带计算器 %是删除.模仿 )其余的键 是可以正常使用的。
2.介绍下QT中的布局
参考:
经常要用到的三个布局部件
基本:
- QHBoxLayout水平布局
- QVBoxLayout垂直布局
- QGridLayout 表格布局
基本:
QHBoxLayout->addWidget(w1);
QVBoxLayout->addWidget(w2);
QGridLayout用法
layout->addWidget(widget,row,column,rowSpan,columnSpan);
layout->addLayout(layout,row,column,rowSpan,columnSpan);
(row,column):控件占据左上角的单元格位置
rowSpan:控件占据的行数
columnSpan:控件占据的列数(不写默认为1)
将布局与主窗体建立联系
layout=new QHBoxLayout(this); //创建好布局,这里一定要将布局与主窗体建立联系
或者
this->setLayout(layout);
OK,看下本界面的实现代码:
在.h 文件中定义空间和Layout,在.cpp文件中添加实现。
.h文件
#ifndef CALCULATOR_H
#define CALCULATOR_H
#include <QWidget>
#include <QPushButton>
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QGridLayout>
#include <QLineEdit>
#include <QDateTime>
#include <QtGui>
#include <QDebug>
#include <QStack>
class Calculator: public QWidget
{
Q_OBJECT
public:
Calculator();//计算器构造函数
~Calculator();//计算器析构函数
double GetCurrentResult();
double CurrentCalculate(double,double,char);
//下面定义每个按键按下去对应的槽函数
public slots:
//0 到 9 按键的槽函数和双0 的槽函数
void buttonZeroClicked();
void buttonOneClicked();
void buttonTwoClicked();
void buttonThreeClicked();
void buttonFourClicked();
void buttonFiveClicked();
void buttonSixClicked();
void buttonSevenClicked();
void buttonEightClicked();
void buttonNineClicked();
void buttonDoubleZeroClicked();
// + - * / = . 根号 % 对应的槽函数
void buttonPlusClicked(); // +对应的槽函数
void buttonMinusClicked(); // -对应的槽函数
void buttonMultiplyClicked(); // *对应的槽函数
void buttonDivideClicked(); // /对应的槽函数
void buttonCXClicked(); // 跟号对应的槽函数
void buttonDecimalClicked(); // 点号对应的槽函数
void buttonResultClicked(); // =对应的槽函数
void buttonBaifenhaoClicked();// %对应的槽函数
//闹钟,公历/农历 CE AC 槽函数
void buttonCenlederClicked(); // 公历/农历对应的槽函数
void buttonAlarmClicked(); // 闹铃对应的槽函数
void buttonCEClicked(); // CE对应的槽函数
void buttonACClicked(); // AC对应的槽函数
//时间/日期 单位 MC MR设定 M-/下调 M+/上调
void buttonDateClicked();
void buttonDanweiClicked();
void buttonMCClicked();
void buttonMRSetClicked();
void buttonMSubClicked();
void buttonMPlusClicked();
//void buttonClearClicked();
// --> GT +/- 电源 对应的槽函数
void buttonArrowClicked();
void buttonGTClicked();
void buttonPlusOrMinusClicked();
void buttonOnOrOffClicked();
private:
//显示框
QLineEdit *inputLine;
// 0 - 9 按钮(用数组来表示)以及双0 按钮
QPushButton* zeroButton;
QPushButton* oneButton;
QPushButton* twoButton;
QPushButton* threeButton;
QPushButton* fourButton;
QPushButton* fiveButton;
QPushButton* sixButton;
QPushButton* sevenButton;
QPushButton* eightButton;
QPushButton* nineButton;
QPushButton* DoublezeroButton;
//清除 和 加减乘除 以及 根号 等号 按钮
QPushButton *addButton; // +
QPushButton *subButton; // -
QPushButton *divButton; // /
QPushButton *mulButton; // *
QPushButton *equButton; // 根号
QPushButton *resultButton; // =
QPushButton *baifenhaoButton;// %
QPushButton *dianhaoButton; // .
QPushButton *alarmButton; // 闹钟
QPushButton *calendarButton; // 农历/公历
QPushButton *CEButton; // CE
QPushButton *ACButton; // AC
QPushButton *dateButton; // 时间/日期
QPushButton *unitButton; // 单位
QPushButton *MCButton; // MC
QPushButton *MRButton; // MR
QPushButton *MPlusButton; // M-
QPushButton *MSubButton; // M+
QPushButton *narrowButton; // ->
QPushButton *GTButton; // GT
QPushButton *PlusOrMinusButton;// +/-
QPushButton *OnOrOffButton; // 电源
//布局
QGridLayout *myGridLayout;
QVBoxLayout *mainLayout;
//计算器的2个运算操作符和运算符 以及结果
QString input1;
QString input2;
QString result;// 记录当前运算的值
char op;
QStack<QString> value;
QStack<char> operatorValue;
};
#endif // CALCULATOR_H
.cpp文件
在文件的构造函数下面加上:
//显示框设置为只读和初始化为0
inputLine = new QLineEdit(this);
inputLine -> setReadOnly(true);
inputLine -> setText(tr("0"));
zeroButton = new QPushButton;
zeroButton -> setText(tr("0"));
oneButton = new QPushButton;
oneButton -> setText(tr("1"));
twoButton = new QPushButton;
twoButton -> setText(tr("2"));
threeButton = new QPushButton;
threeButton -> setText(tr("3"));
fourButton = new QPushButton;
fourButton -> setText(tr("4"));
fiveButton = new QPushButton;
fiveButton -> setText(tr("5"));
sixButton = new QPushButton;
sixButton -> setText(tr("6"));
sevenButton = new QPushButton;
sevenButton -> setText(tr("7"));
eightButton = new QPushButton;
eightButton -> setText(tr("8"));
nineButton = new QPushButton;
nineButton -> setText(tr("9"));
DoublezeroButton = new QPushButton;
DoublezeroButton -> setText(tr("00"));
addButton = new QPushButton; // +
addButton -> setText(tr("+"));
subButton = new QPushButton; // -
subButton -> setText(tr("-"));
divButton = new QPushButton; // /
divButton -> setText(tr("/"));
mulButton = new QPushButton; // *
mulButton -> setText(tr("*"));
equButton = new QPushButton; // 根号
equButton -> setText(tr("根号"));
resultButton = new QPushButton; // =
resultButton -> setText(tr("="));
baifenhaoButton = new QPushButton; // %
baifenhaoButton -> setText(tr("%"));
dianhaoButton = new QPushButton; // .
dianhaoButton -> setText(tr("."));
alarmButton = new QPushButton; // 闹钟
alarmButton -> setText(tr("闹铃"));
calendarButton = new QPushButton; // 农历/公历
calendarButton -> setText(tr("农历/公历"));
CEButton = new QPushButton; // CE
CEButton -> setText(tr("CE"));
ACButton = new QPushButton; // AC
ACButton -> setText(tr("AC"));
dateButton = new QPushButton; // 时间/日期
dateButton -> setText(tr("时间/日期"));
unitButton = new QPushButton; // 单位
unitButton -> setText(tr("单位"));
MCButton = new QPushButton; // MC
MCButton -> setText(tr("MC"));
MRButton = new QPushButton; // MR
MRButton -> setText(tr("MR"));
MPlusButton = new QPushButton; // M-
MPlusButton -> setText(tr("M-/下调"));
MSubButton = new QPushButton; // M+
MSubButton -> setText(tr("M+/上调"));
narrowButton = new QPushButton; // ->
narrowButton -> setText(tr("——》"));
GTButton = new QPushButton; // GT
GTButton -> setText(tr("GT"));
PlusOrMinusButton = new QPushButton;// +/-
PlusOrMinusButton -> setText(tr("+/-"));
OnOrOffButton = new QPushButton; // 电源
OnOrOffButton -> setText(tr("Power"));
myGridLayout = new QGridLayout;
//InputLine 的位置在于0行0列,占据1行6列
myGridLayout -> addWidget(inputLine,0,0,1,6);
myGridLayout -> addWidget(narrowButton,1,0); // ->
myGridLayout -> addWidget(GTButton,1,1); // GT
myGridLayout -> addWidget(PlusOrMinusButton,1,2); // +/-
myGridLayout -> addWidget(OnOrOffButton,1,3,1,2); // 电源
myGridLayout -> addWidget(dateButton,2,0); // 时间/日期
myGridLayout -> addWidget(unitButton,2,1); // 单位
myGridLayout -> addWidget(MCButton,2,2); // MC
myGridLayout -> addWidget(MRButton,2,3); // MR
myGridLayout -> addWidget(MPlusButton,2,4); // M-
myGridLayout -> addWidget(MSubButton,2,5); // M+
myGridLayout -> addWidget(alarmButton,3,0); // 闹钟
myGridLayout -> addWidget(calendarButton,4,0); // 农历/公历
myGridLayout -> addWidget(CEButton,5,0); // CE
myGridLayout -> addWidget(ACButton,6,0); // AC
myGridLayout -> addWidget(zeroButton,6,1);
myGridLayout -> addWidget(oneButton,5,1);
myGridLayout -> addWidget(twoButton,5,2);
myGridLayout -> addWidget(threeButton,5,3);
myGridLayout -> addWidget(fourButton,4,1);
myGridLayout -> addWidget(fiveButton,4,2);
myGridLayout -> addWidget(sixButton,4,3);
myGridLayout -> addWidget(sevenButton,3,1);
myGridLayout -> addWidget(eightButton,3,2);
myGridLayout -> addWidget(nineButton,3,3);
myGridLayout -> addWidget(DoublezeroButton,6,2);
myGridLayout -> addWidget(addButton,5,4,2,1); // +
myGridLayout -> addWidget(subButton,5,5); // -
myGridLayout -> addWidget(divButton,4,5); // /
myGridLayout -> addWidget(mulButton,4,4); // *
myGridLayout -> addWidget(equButton,3,5); // 根号
myGridLayout -> addWidget(resultButton,6,5); // =
myGridLayout -> addWidget(baifenhaoButton,3,4); // %
myGridLayout -> addWidget(dianhaoButton,6,3); // .
这样就可以构造成上文中的界面,
实现+/-/* //是使用了 QStack来完成的。全部.cpp代码:
#include <Calculator.h>
//操作函数
Calculator::Calculator()
{
//显示框设置为只读和初始化为0
inputLine = new QLineEdit(this);
inputLine -> setReadOnly(true);
inputLine -> setText(tr("0"));
zeroButton = new QPushButton;
zeroButton -> setText(tr("0"));
oneButton = new QPushButton;
oneButton -> setText(tr("1"));
twoButton = new QPushButton;
twoButton -> setText(tr("2"));
threeButton = new QPushButton;
threeButton -> setText(tr("3"));
fourButton = new QPushButton;
fourButton -> setText(tr("4"));
fiveButton = new QPushButton;
fiveButton -> setText(tr("5"));
sixButton = new QPushButton;
sixButton -> setText(tr("6"));
sevenButton = new QPushButton;
sevenButton -> setText(tr("7"));
eightButton = new QPushButton;
eightButton -> setText(tr("8"));
nineButton = new QPushButton;
nineButton -> setText(tr("9"));
DoublezeroButton = new QPushButton;
DoublezeroButton -> setText(tr("00"));
addButton = new QPushButton; // +
addButton -> setText(tr("+"));
subButton = new QPushButton; // -
subButton -> setText(tr("-"));
divButton = new QPushButton; // /
divButton -> setText(tr("/"));
mulButton = new QPushButton; // *
mulButton -> setText(tr("*"));
equButton = new QPushButton; // 根号
equButton -> setText(tr("根号"));
resultButton = new QPushButton; // =
resultButton -> setText(tr("="));
baifenhaoButton = new QPushButton; // %
baifenhaoButton -> setText(tr("%"));
dianhaoButton = new QPushButton; // .
dianhaoButton -> setText(tr("."));
alarmButton = new QPushButton; // 闹钟
alarmButton -> setText(tr("闹铃"));
calendarButton = new QPushButton; // 农历/公历
calendarButton -> setText(tr("农历/公历"));
CEButton = new QPushButton; // CE
CEButton -> setText(tr("CE"));
ACButton = new QPushButton; // AC
ACButton -> setText(tr("AC"));
dateButton = new QPushButton; // 时间/日期
dateButton -> setText(tr("时间/日期"));
unitButton = new QPushButton; // 单位
unitButton -> setText(tr("单位"));
MCButton = new QPushButton; // MC
MCButton -> setText(tr("MC"));
MRButton = new QPushButton; // MR
MRButton -> setText(tr("MR"));
MPlusButton = new QPushButton; // M-
MPlusButton -> setText(tr("M-/下调"));
MSubButton = new QPushButton; // M+
MSubButton -> setText(tr("M+/上调"));
narrowButton = new QPushButton; // ->
narrowButton -> setText(tr("——》"));
GTButton = new QPushButton; // GT
GTButton -> setText(tr("GT"));
PlusOrMinusButton = new QPushButton;// +/-
PlusOrMinusButton -> setText(tr("+/-"));
OnOrOffButton = new QPushButton; // 电源
OnOrOffButton -> setText(tr("Power"));
myGridLayout = new QGridLayout;
//InputLine 的位置在于0行0列,占据1行6列
myGridLayout -> addWidget(inputLine,0,0,1,6);
myGridLayout -> addWidget(narrowButton,1,0); // ->
myGridLayout -> addWidget(GTButton,1,1); // GT
myGridLayout -> addWidget(PlusOrMinusButton,1,2); // +/-
myGridLayout -> addWidget(OnOrOffButton,1,3,1,2); // 电源
myGridLayout -> addWidget(dateButton,2,0); // 时间/日期
myGridLayout -> addWidget(unitButton,2,1); // 单位
myGridLayout -> addWidget(MCButton,2,2); // MC
myGridLayout -> addWidget(MRButton,2,3); // MR
myGridLayout -> addWidget(MPlusButton,2,4); // M-
myGridLayout -> addWidget(MSubButton,2,5); // M+
myGridLayout -> addWidget(alarmButton,3,0); // 闹钟
myGridLayout -> addWidget(calendarButton,4,0); // 农历/公历
myGridLayout -> addWidget(CEButton,5,0); // CE
myGridLayout -> addWidget(ACButton,6,0); // AC
myGridLayout -> addWidget(zeroButton,6,1);
myGridLayout -> addWidget(oneButton,5,1);
myGridLayout -> addWidget(twoButton,5,2);
myGridLayout -> addWidget(threeButton,5,3);
myGridLayout -> addWidget(fourButton,4,1);
myGridLayout -> addWidget(fiveButton,4,2);
myGridLayout -> addWidget(sixButton,4,3);
myGridLayout -> addWidget(sevenButton,3,1);
myGridLayout -> addWidget(eightButton,3,2);
myGridLayout -> addWidget(nineButton,3,3);
myGridLayout -> addWidget(DoublezeroButton,6,2);
myGridLayout -> addWidget(addButton,5,4,2,1); // +
myGridLayout -> addWidget(subButton,5,5); // -
myGridLayout -> addWidget(divButton,4,5); // /
myGridLayout -> addWidget(mulButton,4,4); // *
myGridLayout -> addWidget(equButton,3,5); // 根号
myGridLayout -> addWidget(resultButton,6,5); // =
myGridLayout -> addWidget(baifenhaoButton,3,4); // %
myGridLayout -> addWidget(dianhaoButton,6,3); // .
//addButton -> resize( subButton -> width(),(subButton -> height()) * 2);
// 将每个按钮的click 信号与槽函数连上
QObject::connect(zeroButton,SIGNAL(clicked()),this,SLOT(buttonZeroClicked()));
QObject::connect(oneButton,SIGNAL(clicked()),this,SLOT(buttonOneClicked()));
QObject::connect(twoButton,SIGNAL(clicked()),this,SLOT(buttonTwoClicked()));
QObject::connect(threeButton,SIGNAL(clicked()),this,SLOT(buttonThreeClicked()));
QObject::connect(fourButton,SIGNAL(clicked()),this,SLOT(buttonFourClicked()));
QObject::connect(fiveButton,SIGNAL(clicked()),this,SLOT(buttonFiveClicked()));
QObject::connect(sixButton,SIGNAL(clicked()),this,SLOT(buttonSixClicked()));
QObject::connect(sevenButton,SIGNAL(clicked()),this,SLOT(buttonSevenClicked()));
QObject::connect(eightButton,SIGNAL(clicked()),this,SLOT(buttonEightClicked()));
QObject::connect(nineButton,SIGNAL(clicked()),this,SLOT(buttonNineClicked()));
QObject::connect(DoublezeroButton,SIGNAL(clicked()),this,SLOT(buttonDoubleZeroClicked()));
QObject::connect(addButton,SIGNAL(clicked()),this,SLOT(buttonPlusClicked()));
QObject::connect(subButton,SIGNAL(clicked()),this,SLOT(buttonMinusClicked()));
QObject::connect(mulButton,SIGNAL(clicked()),this,SLOT(buttonMultiplyClicked()));
QObject::connect(divButton,SIGNAL(clicked()),this,SLOT(buttonDivideClicked()));
QObject::connect(equButton,SIGNAL(clicked()),this,SLOT(buttonCXClicked()));
QObject::connect(dianhaoButton,SIGNAL(clicked()),this,SLOT(buttonDecimalClicked()));
QObject::connect(resultButton,SIGNAL(clicked()),this,SLOT(buttonResultClicked()));
QObject::connect(baifenhaoButton,SIGNAL(clicked()),this,SLOT(buttonBaifenhaoClicked()));
QObject::connect(calendarButton,SIGNAL(clicked()),this,SLOT(buttonCenlederClicked()));
QObject::connect(alarmButton,SIGNAL(clicked()),this,SLOT(buttonAlarmClicked()));
QObject::connect(CEButton,SIGNAL(clicked()),this,SLOT(buttonCEClicked()));
QObject::connect(ACButton,SIGNAL(clicked()),this,SLOT(buttonACClicked()));
QObject::connect(dateButton,SIGNAL(clicked()),this,SLOT(buttonDateClicked()));
QObject::connect(unitButton,SIGNAL(clicked()),this,SLOT(buttonDanweiClicked()));
QObject::connect(MCButton,SIGNAL(clicked()),this,SLOT(buttonMCClicked()));
QObject::connect(MRButton,SIGNAL(clicked()),this,SLOT(buttonMRSetClicked()));
QObject::connect(MPlusButton,SIGNAL(clicked()),this,SLOT(buttonMSubClicked()));
QObject::connect(MSubButton,SIGNAL(clicked()),this,SLOT(buttonMPlusClicked()));
//void buttonClearClicked();
QObject::connect(narrowButton,SIGNAL(clicked()),this,SLOT(buttonArrowClicked()));
QObject::connect(GTButton,SIGNAL(clicked()),this,SLOT(buttonGTClicked()));
QObject::connect(PlusOrMinusButton,SIGNAL(clicked()),this,SLOT(buttonPlusOrMinusClicked()));
QObject::connect(OnOrOffButton,SIGNAL(clicked()),this,SLOT(buttonOnOrOffClicked()));
input1 = "0"; //初始都为0
input2 = "0";
op = ' ';//初始化为空格
mainLayout = new QVBoxLayout(this); //这里一定要加this。。。
mainLayout -> addLayout(myGridLayout);
this -> setWindowTitle("Calculator");
this -> show();
}
Calculator::~Calculator()
{
}
//这个函数是计算当前所存在的计算
double Calculator::GetCurrentResult()
{
double paraLeft,paraRight;
QString stackResult;
while(!value.empty() && !operatorValue.empty())
{
paraLeft = value.pop().toDouble();
paraRight = value.pop().toDouble();
char c = operatorValue.pop();
double result = CurrentCalculate(paraLeft,paraRight,c);
stackResult = QString::number(result,'f',3);
value.push(stackResult);
input1 = stackResult;
input2 = "0";
}
return 0;
}
double Calculator::CurrentCalculate(double x, double y, char c)
{
double result;
switch (c)
{
case '+':result = y + x;break;
case '-':result = y - x;break;
case '*':result = y * x;break;
case '/':result = y / x;break;
}
return result;
}
void Calculator::buttonZeroClicked()
{
if(input2 == "0")
;
else
{
input2.append("0");
}
inputLine->setText(input2);
}
void Calculator::buttonOneClicked()
{
if(input2 == "0")
input2 = "1";
else
{
input2.append("1");
}
inputLine->setText(input2);
}
void Calculator::buttonTwoClicked()
{
if(input2 == "0")
input2 = "2";
else
{
input2.append("2");
}
inputLine->setText(input2);
}
void Calculator::buttonThreeClicked()
{
if(input2 == "0")
input2 = "3";
else
{
input2.append("3");
}
inputLine->setText(input2);
}
void Calculator::buttonFourClicked()
{
if(input2 == "0")
input2 = "4";
else
{
input2.append("4");
}
inputLine->setText(input2);
}
void Calculator::buttonFiveClicked()
{
if(input2 == "0")
input2 = "5";
else
{
input2.append("5");
}
inputLine->setText(input2);
}
void Calculator::buttonSixClicked()
{
if(input2 == "0")
input2 = "6";
else
{
input2.append("6");
}
inputLine->setText(input2);
}
void Calculator::buttonSevenClicked()
{
if(input2 == "0")
input2 = "7";
else
{
input2.append("7");
}
inputLine->setText(input2);
}
void Calculator::buttonEightClicked()
{
if(input2 == "0")
input2 = "8";
else
{
input2.append("8");
}
inputLine->setText(input2);
}
void Calculator::buttonNineClicked()
{
if(input2 == "0")
input2 = "9";
else
{
input2.append("9");
}
inputLine->setText(input2);
}
void Calculator::buttonDoubleZeroClicked()
{
if(input2 == "0")
;
else
{
input2.append("00");
}
inputLine->setText(input2);
}
void Calculator::buttonPlusClicked() //+
{
double paraLeft,paraRight;//两个操作数
QString stackResult;
if(op == ' ')//表示第一个操作数
{
if(input2 != "0")
{
input1 = input2;
}
else
{
input1 = "0";
}
input2 = "0";
op = '+';
value.push(input1);
operatorValue.push('+');
}
else
{
value.push(input2);
while(!value.empty() && !operatorValue.empty())
{
paraLeft = value.pop().toDouble();
paraRight = value.pop().toDouble();
char c = operatorValue.pop();
double result = CurrentCalculate(paraLeft,paraRight,c);
stackResult = QString::number(result,'f',3);
value.push(stackResult);
input1 = stackResult;
}
operatorValue.push('+');
input2 = "0";
op = '+';
inputLine -> setText(input1);
}
}
void Calculator::buttonMinusClicked()
{
double paraLeft,paraRight;//两个操作数
QString stackResult;
if(op == ' ')//表示第一个操作数
{
if(input2 != "0")
input1 = input2;
else
input1 = "0";
input2 = "0";
op = '-';
value.push(input1);
operatorValue.push('-');
}
else
{
value.push(input2);
while(!value.empty() && !operatorValue.empty())
{
paraLeft = value.pop().toDouble();
paraRight = value.pop().toDouble();
char c = operatorValue.pop();
double result = CurrentCalculate(paraLeft,paraRight,c);
stackResult = QString::number(result,'f',3);
value.push(stackResult);
input1 = stackResult;
}
operatorValue.push('-');
input2 = "0";
op = '-';
inputLine -> setText(input1);
}
}
void Calculator::buttonMultiplyClicked()
{
if(op == ' ')//表示第一个操作数
{
input1 = input2;
input2 = "0";
op = '*';
value.push(input1);
operatorValue.push('*');
}
else
{
value.push(input2);
operatorValue.push('*');
input2 = "0";
}
}
void Calculator::buttonDivideClicked()
{
if(op == ' ')//表示第一个操作数
{
input1 = input2;
input2 = "0";
op = '/';
value.push(input1);
operatorValue.push('/');
}
else
{
value.push(input2);
operatorValue.push('/');
input2 = "0";
}
}
void Calculator::buttonCXClicked()
{
}
void Calculator::buttonDecimalClicked()
{
//如果input2中不包含.
if(!input2.contains("."))
input2.append(".");
inputLine->setText(input2);
}
void Calculator::buttonResultClicked()
{
value.push(input2);
double paraLeft,paraRight;//两个操作数
QString stackResult;
if(op == ' ')//表示第一个操作数
{
;// Do nothing
}
else
{
while(!value.empty() && !operatorValue.empty())
{
paraLeft = value.pop().toDouble();
paraRight = value.pop().toDouble();
char c = operatorValue.pop();
double result = CurrentCalculate(paraLeft,paraRight,c);
stackResult = QString::number(result,'f',3);
value.push(stackResult);
}
inputLine -> setText(stackResult);
input2 = stackResult;
op = ' ';
}
}
void Calculator::buttonBaifenhaoClicked()
{
input1 = "0";
input2 = "0";
value.clear();
operatorValue.clear();
inputLine->setText(input1);
}
void Calculator::buttonCenlederClicked()
{
input1 = input2 = "0";//点击日期,则返回
QDate date = QDate::currentDate();
QString strDate = date.toString();
inputLine -> setText(strDate);
}
void Calculator::buttonAlarmClicked()
{
}
void Calculator::buttonCEClicked()
{
}
void Calculator::buttonACClicked()
{
}
void Calculator::buttonDateClicked()
{
input1 = input2 = "0";//点击日期,则返回
QDateTime time = QDateTime::currentDateTime();//获取现在时间
QString str = time.toString("yyyy-MM-dd hh:mm:ss ddd"); //设置显示格式
inputLine -> setText(str);
}
void Calculator::buttonDanweiClicked()
{
}
void Calculator::buttonMCClicked()
{
}
void Calculator::buttonMRSetClicked()
{
}
void Calculator::buttonMSubClicked()
{
}
void Calculator::buttonMPlusClicked()
{
}
void Calculator::buttonArrowClicked()
{
input1 = "0";
input2 = "0";
value.clear();
operatorValue.clear();
inputLine->setText(input1);
}
void Calculator::buttonGTClicked()
{
}
void Calculator::buttonPlusOrMinusClicked()
{
double paraRight = input2.toDouble();
if( paraRight != 0)
paraRight *= ( -1 );
input2 = QString::number(paraRight,'f',3);
inputLine -> setText(input2);
}
void Calculator::buttonOnOrOffClicked()
{
close();
}
main文件:
#include <QApplication>
#include <QTextCodec>
#include <Calculator.h>
int main(int argc, char *argv[])
{
QApplication app(argc,argv);
//下面这种是解决GT4的乱码问题,但是这种方法在大的程序是不可取的,具体地址看
//http://forum.ubuntu.org.cn/viewtopic.php?f=162&t=83734
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
QApplication::setFont(QFont(QObject::tr("宋体"), 10, QFont::Normal));
Calculator my ;
my.show();
return app.exec();
}