• Qt5编写科学计算器碰到的一个问题


    最近在编写计算器的时候,碰到了一些问题,比如sin按钮功能。

    我的代码本来是这样写的:


    sin按钮槽函数

    void MainWindow::on_btnSin_clicked()
    {
        QString s = ui->lineEdit->text();
        ui->lineEdit->setText("sin("+s+"rad)");
        clickbtn("sin");
        emit whichBtn(OPERA);
    }
    调用的求值函数部分

    //QString str = ui->lineEdit->text();
        double operand=ui->lineEdit->text().toDouble();
        double result=0.0;
        const double pi=3.14592654;
        if(btn == tr("sin"))
        {
            double a=operand;
            result=sin(a);
            QString str=QString::number(result,'f',2);
            result=str.toDouble();
            ui->lineEdit1->setText(QString::number(result));
        }



    但是这样运行下来,无论输入是什么,计算结果都是0,非常郁闷。

    后来我在上面函数注释的那里设置了断点,然后单步调试(F10),终于找到了问题的所在

    原来是代码顺序写反了,应该先取值进入函数计算,然后在屏幕上显示结果,正确的代码应该是这样:

    void MainWindow::on_btnSin_clicked()
    {
        QString s = ui->lineEdit->text();
        clickbtn("sin");
        ui->lineEdit->setText("sin("+s+"rad)");
        emit whichBtn(OPERA);
    }

    这里就仅仅是把sclikbtn函数调用提前到了结果显示前面,就正确了。

  • 相关阅读:
    一个简单的空间配置器
    【转】c++中placement new操作符
    类的operator new与operator delete的重载【转】
    STL中常用的c++语法
    java编程思想-多态
    java编程思想-复用类(2)
    java编程思想-复用类
    import与require的区别
    gulp插件
    gulp-gulpfile.js语法说明
  • 原文地址:https://www.cnblogs.com/raiven2008/p/4209218.html
Copyright © 2020-2023  润新知