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函数调用提前到了结果显示前面,就正确了。

posted @ 2014-12-31 15:05  西安小陈  阅读(563)  评论(0编辑  收藏  举报