• 大小: 4.92MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-09-16
  • 语言: 其他
  • 标签: Qt计算器  

资源简介

自己用Qt实现了一个简单的计算器,可以给有需要的朋友参考下。开发环境是Qt4.8.6+Qt Creator3.2.0,里面包含了源码和打包好的工具。本人水平有限,请高手飘过,如有问题请指教。谢谢!

资源截图

代码片段和文件信息

#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 < len; ++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 < len; ++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());
    

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件     202752  2014-09-07 09:23  Qt四则混合运算计算器\release\Calculator.exe

     文件     117262  2014-03-08 02:56  Qt四则混合运算计算器\release\libgcc_s_dw2-1.dll

     文件     970766  2014-03-08 02:56  Qt四则混合运算计算器\release\libstdc++-6.dll

     文件      48640  2014-03-08 02:56  Qt四则混合运算计算器\release\libwinpthread-1.dll

     文件    2978816  2014-09-06 11:01  Qt四则混合运算计算器\release\QtCore4.dll

     文件   10089984  2014-05-14 14:54  Qt四则混合运算计算器\release\QtGui4.dll

     文件       7358  2014-09-07 07:24  Qt四则混合运算计算器\src\calculator.ico

     文件        518  2014-09-07 07:57  Qt四则混合运算计算器\src\Calculator.pro

     文件      18217  2014-09-07 08:25  Qt四则混合运算计算器\src\Calculator.pro.user

     文件         66  2014-09-07 07:27  Qt四则混合运算计算器\src\calculator.rc

     文件        189  2014-09-07 08:15  Qt四则混合运算计算器\src\css\stylesheet.css

     文件       5215  2014-09-06 22:03  Qt四则混合运算计算器\src\expression.cpp

     文件        589  2014-09-06 21:08  Qt四则混合运算计算器\src\expression.h

     文件     126975  2014-09-07 08:19  Qt四则混合运算计算器\src\images\background.png

     文件       5169  2014-09-07 09:15  Qt四则混合运算计算器\src\images\btn_bg.png

     文件       3101  2014-09-07 09:15  Qt四则混合运算计算器\src\images\text_edit_bg.png

     文件        175  2014-09-06 10:02  Qt四则混合运算计算器\src\main.cpp

     文件        239  2014-09-07 08:20  Qt四则混合运算计算器\src\res.qrc

     文件       3245  2014-09-07 08:21  Qt四则混合运算计算器\src\widget.cpp

     文件        578  2014-09-07 08:20  Qt四则混合运算计算器\src\widget.h

     文件      10120  2014-09-06 20:33  Qt四则混合运算计算器\src\widget.ui

     目录          0  2014-09-07 09:34  Qt四则混合运算计算器\src\css

     目录          0  2014-09-07 09:34  Qt四则混合运算计算器\src\images

     目录          0  2014-09-07 09:35  Qt四则混合运算计算器\release

     目录          0  2014-09-07 09:34  Qt四则混合运算计算器\src

     目录          0  2014-09-07 09:34  Qt四则混合运算计算器

----------- ---------  ---------- -----  ----

             14589974                    26


评论

共有 条评论