0

我正在通过尝试创建一个简单的计算器来学习 Qt 中的可视化编程。我在使用 QLCDNumber 时遇到问题,因为我无法显示双数,它既不显示昏迷也不显示小数。代码很简单,但它应该可以完成这项工作,但我怎样才能显示昏迷?

这是代码:

#include "mainwindow.h"
#include "ui_mainwindow.h"

using namespace std;

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}



// VARIABLES GLOBALES
double valor1 = 0;
double valor2 = 0;
double suma = 0;
double resta = 0;
double multiplicacion = 0;
double division = 0;
double raiz = 0;
double resultado;
int contador_decimales = 0;
bool suma_presionada = 0;
bool resta_presionada = 0;
bool resultado_inicializado = 0;


// BOTÓN 1
void MainWindow::on_boton1_clicked()
{
    if (contador_decimales == 0){
        if (suma_presionada == 0 && resta_presionada == 0){
            valor1 = valor1 * 10 + 1;
            ui -> pantalla -> display(valor1);
        }
        else {
            valor2 = valor2 * 10 + 1;
            ui -> pantalla -> display(valor2);
        }
    } else {
        if (suma_presionada == 0 && resta_presionada == 0){
            valor1 = valor1 + 1/contador_decimales;
            ui -> pantalla -> display(valor1);
            contador_decimales = contador_decimales * 10;
        }
        else {
            valor2 = valor2 + 1/contador_decimales;
            ui -> pantalla -> display(valor2);
            contador_decimales = contador_decimales * 10;
        }
    }

}

// BOTÓN 2
void MainWindow::on_boton2_clicked()
{
    if (suma_presionada == 0 && resta_presionada == 0){
        valor1 = valor1 * 10 + 2;
        ui -> pantalla -> display(valor1);
    }
    else {
        valor2 = valor2 * 10 + 2;
        ui -> pantalla -> display(valor2);
    }
}


// BOTÓN 3
void MainWindow::on_boton3_clicked()
{
    if (suma_presionada == 0 && resta_presionada == 0){
        valor1 = valor1 * 10 + 3;
        ui -> pantalla -> display(valor1);
    }
    else {
        valor2 = valor2 * 10 + 3;
        ui -> pantalla -> display(valor2);
    }
}


// BOTÓN SUMA
void MainWindow::on_boton_suma_clicked()
{
    suma_presionada = 1;
    resta_presionada = 0;
    contador_decimales = 0;
}


// BOTÓN RESTA
void MainWindow::on_boton_resta_clicked()
{
    suma_presionada = 0;
    resta_presionada = 1;
    contador_decimales = 0;
}

// BOTÓN IGUAL
void MainWindow::on_boton_igual_clicked()
{

    // SUMA
    if (suma_presionada == 1){
        if (valor1 != NULL){
            suma = valor1 + valor2;
        } else {
            suma = resultado + valor2;

        }
        ui -> pantalla -> display(suma);
        resultado = ui -> pantalla -> value();
        suma_presionada = 0;
        contador_decimales = 0;
        valor1 = NULL;
        valor2 = 0;
    }


    // RESTA
    if (resta_presionada == 1){
        if (valor1 != NULL){
            suma = valor1 - valor2;
        } else {
            suma = resultado - valor2;

        }
        ui -> pantalla -> display(suma);
        resultado = ui -> pantalla -> value();
        resta_presionada = 0;
        valor1 = NULL;
        valor2 = 0;
    }

}


// BOTÓN DECIMAL
void MainWindow::on_boton_coma_clicked()
{
    contador_decimales = 10;
     ui -> pantalla -> smallDecimalPoint();
    ui -> pantalla -> setSmallDecimalPoint(true);
}
4

1 回答 1

0

我发现了问题。不是液晶显示器不显示双精度,而是我没有双精度。我将 contador_decimales 声明为一个 int,所以 1/contador_decimales 是一个 int。我尝试将其强制转换为双精度,但它不起作用,但如果我将 contador_decimales 声明为双精度,它会起作用。

我想我很确定这是最不发达国家,因为我发现的信息太少了。

很抱歉这个愚蠢的问题,事实证明。

于 2020-04-05T07:31:02.877 回答