資源簡(jiǎn)介
自己用Qt實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的計(jì)算器,可以給有需要的朋友參考下。開(kāi)發(fā)環(huán)境是Qt4.8.6+Qt Creator3.2.0,里面包含了源碼和打包好的工具。本人水平有限,請(qǐng)高手飄過(guò),如有問(wèn)題請(qǐng)指教。謝謝!

代碼片段和文件信息
#include?
#include?
#include?“expression.h“
expression::expression(const?QString?&str?Qobject?*parent)?:
????Qobject(parent)
{
????expression?=?str;
}
bool?expression::isValid()?const
{
????QRegExp?regExp(“\\(+\\)+“);
????if(regExp.exactMatch(expression))
????????return?false;
????QStack?stack;
????int?len?=?expression.length();
????for(int?i?=?0;?i?????{
????????QChar?c?=?expression[i];
????????if(“(“?==?c)
????????????stack.push(c);
????????else?if(“)“?==?c)
????????{
????????????if(stack.isEmpty())
????????????????return?false;
????????????stack.pop();
????????}
????}
????return?stack.isEmpty();
}
void?expression::handleexpression()
{
????expression?=?expression.replace(QRegExp(“\\)\\(“)?“)*(“);
????QRegExp?regExp;
????regExp.setPattern(“\\d\\(“);
????int?pos?=?-1;
????while((pos?=?regExp.indexIn(expression))?!=?-1)
????{
????????expression?=?expression.insert(pos?+?1?“*“);
????????pos?+=?regExp.matchedLength();
????}
????regExp.setPattern(“\\)\\d“);
????pos?=?-1;
????while((pos?=?regExp.indexIn(expression))?!=?-1)
????{
????????expression?=?expression.insert(pos?+?1?“*“);
????????pos?+=?regExp.matchedLength();
????}
}
int?expression::priority(const?QChar?&c)?const
{
????if(‘(‘?==?c)
????????return?-1;
????else?if(‘+‘?==?c?||?‘-‘?==?c)
????????return?0;
????else?if(‘*‘?==?c?||?‘/‘?==?c)
????????return?1;
????return?-1;
}
void?expression::divide()
{
????QString?str;
????int?len?=?expression.length();
????for(int?i?=?0;?i?????{
????????QChar?c?=?expression[i];
????????if(c.isDigit()?||?“.“?==?c)
????????????str?+=?c;
????????else
????????{
????????????if(!str.isEmpty())
????????????????queue.enqueue(str);
????????????queue.enqueue(c);
????????????str.clear();
????????}
????????if(i?==?len?-?1?&&?c.isDigit())
????????????queue.enqueue(str);
????}
}
void?expression::changeToSuffix()
{
????while(!queue.isEmpty())
????{
????????QString?qStr?=?queue.dequeue();
????????if(“(“?==?qStr)
????????????opStack.push(qStr);
????????else?if(“)“?==?qStr)
????????{
????????????if(opStack.isEmpty())
????????????????opStack.push(qStr);
????????????else
????????????{
????????????????QString?topStr?=?opStack.top();
????????????????while(“(“?!=?topStr)
????????????????{
????????????????????digitStack.push(topStr);
????????????????????opStack.pop();
????????????????????if(opStack.isEmpty())
????????????????????????break;
????????????????????topStr?=?opStack.top();
????????????????}
????????????????if(!opStack.isEmpty())
????????????????????opStack.pop();
????????????}
????????}
????????else?if(“+“?==?qStr?||?“-“?==?qStr?||?“*“?==?qStr?||?“/“?==?qStr)
????????{
????????????if(opStack.isEmpty())
????????????????opStack.push(qStr);
????????????else
????????????{
????????????????QString?topStr?=?opStack.top();
????????????????assert(1?==?qStr.length());
????
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件?????202752??2014-09-07?09:23??Qt四則混合運(yùn)算計(jì)算器\release\Calculator.exe
?????文件?????117262??2014-03-08?02:56??Qt四則混合運(yùn)算計(jì)算器\release\libgcc_s_dw2-1.dll
?????文件?????970766??2014-03-08?02:56??Qt四則混合運(yùn)算計(jì)算器\release\libstdc++-6.dll
?????文件??????48640??2014-03-08?02:56??Qt四則混合運(yùn)算計(jì)算器\release\libwinpthread-1.dll
?????文件????2978816??2014-09-06?11:01??Qt四則混合運(yùn)算計(jì)算器\release\QtCore4.dll
?????文件???10089984??2014-05-14?14:54??Qt四則混合運(yùn)算計(jì)算器\release\QtGui4.dll
?????文件???????7358??2014-09-07?07:24??Qt四則混合運(yùn)算計(jì)算器\src\calculator.ico
?????文件????????518??2014-09-07?07:57??Qt四則混合運(yùn)算計(jì)算器\src\Calculator.pro
?????文件??????18217??2014-09-07?08:25??Qt四則混合運(yùn)算計(jì)算器\src\Calculator.pro.user
?????文件?????????66??2014-09-07?07:27??Qt四則混合運(yùn)算計(jì)算器\src\calculator.rc
?????文件????????189??2014-09-07?08:15??Qt四則混合運(yùn)算計(jì)算器\src\css\st
?????文件???????5215??2014-09-06?22:03??Qt四則混合運(yùn)算計(jì)算器\src\ex
?????文件????????589??2014-09-06?21:08??Qt四則混合運(yùn)算計(jì)算器\src\ex
?????文件?????126975??2014-09-07?08:19??Qt四則混合運(yùn)算計(jì)算器\src\images\background.png
?????文件???????5169??2014-09-07?09:15??Qt四則混合運(yùn)算計(jì)算器\src\images\btn_bg.png
?????文件???????3101??2014-09-07?09:15??Qt四則混合運(yùn)算計(jì)算器\src\images\text_edit_bg.png
?????文件????????175??2014-09-06?10:02??Qt四則混合運(yùn)算計(jì)算器\src\main.cpp
?????文件????????239??2014-09-07?08:20??Qt四則混合運(yùn)算計(jì)算器\src\res.qrc
?????文件???????3245??2014-09-07?08:21??Qt四則混合運(yùn)算計(jì)算器\src\widget.cpp
?????文件????????578??2014-09-07?08:20??Qt四則混合運(yùn)算計(jì)算器\src\widget.h
?????文件??????10120??2014-09-06?20:33??Qt四則混合運(yùn)算計(jì)算器\src\widget.ui
?????目錄??????????0??2014-09-07?09:34??Qt四則混合運(yùn)算計(jì)算器\src\css
?????目錄??????????0??2014-09-07?09:34??Qt四則混合運(yùn)算計(jì)算器\src\images
?????目錄??????????0??2014-09-07?09:35??Qt四則混合運(yùn)算計(jì)算器\release
?????目錄??????????0??2014-09-07?09:34??Qt四則混合運(yùn)算計(jì)算器\src
?????目錄??????????0??2014-09-07?09:34??Qt四則混合運(yùn)算計(jì)算器
-----------?---------??----------?-----??----
?????????????14589974????????????????????26
評(píng)論
共有 條評(píng)論