我正在尝试通过创建一个简单的计算器来学习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);
}
我发现了问题。不是LCD不会显示双屏,而是我没有双屏。我将contador_decimales声明为一个整数,因此1 / contador_decimales是一个整数。我尝试将其强制转换为双精度,但是它不起作用,但是如果我将contador_decimales声明为双精度,则可以。