最近在编写计算器的时候,碰到了一些问题,比如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函数调用提前到了结果显示前面,就正确了。