QT开发——计算器

界面UI设计

槽函数

{
    ui->setupUi(this);

    // 连接信号和槽
    connect(ui->pushButton1, &QPushButton::clicked, this, &MainWindow2::on_digit_clicked);//1
    connect(ui->pushButton2, &QPushButton::clicked, this, &MainWindow2::on_digit_clicked);//2
    connect(ui->pushButton3, &QPushButton::clicked, this, &MainWindow2::on_digit_clicked);//3
    connect(ui->pushButton4, &QPushButton::clicked, this, &MainWindow2::on_digit_clicked);//4
    connect(ui->pushButton5, &QPushButton::clicked, this, &MainWindow2::on_digit_clicked);//5
    connect(ui->pushButton6, &QPushButton::clicked, this, &MainWindow2::on_digit_clicked);//6
    connect(ui->pushButton7, &QPushButton::clicked, this, &MainWindow2::on_digit_clicked);//7
    connect(ui->pushButton8, &QPushButton::clicked, this, &MainWindow2::on_digit_clicked);//8
    connect(ui->pushButton9, &QPushButton::clicked, this, &MainWindow2::on_digit_clicked);//9
    connect(ui->pushButton0, &QPushButton::clicked, this, &MainWindow2::on_digit_clicked);//0
    connect(ui->pushButtonAdd, &QPushButton::clicked, this, &MainWindow2::on_pushButtonAdd_clicked);//加
    connect(ui->pushButtonSubtract, &QPushButton::clicked, this, &MainWindow2::on_pushButtonSubtract_clicked);//减
    connect(ui->pushButtonMultiply, &QPushButton::clicked, this, &MainWindow2::on_pushButtonMultiply_clicked);//乘
    connect(ui->pushButtonDivide, &QPushButton::clicked, this, &MainWindow2::on_pushButtonDivide_clicked);//除
    connect(ui->pushButtonClear, &QPushButton::clicked, this, &MainWindow2::on_pushButtonClear_clicked);//清除
    connect(ui->pushButtonEquals, &QPushButton::clicked, this, &MainWindow2::on_pushButtonEquals_clicked);//计算

    // 初始化输入字符串
    inputString = "";
}

运算符

void MainWindow2::on_pushButtonAdd_clicked()
{
    setPendingOperator("+");
}

void MainWindow2::on_pushButtonSubtract_clicked()
{
    setPendingOperator("-");
}

void MainWindow2::on_pushButtonMultiply_clicked()
{
    setPendingOperator("*");
}

void MainWindow2::on_pushButtonDivide_clicked()
{
    setPendingOperator("/");
}

计算逻辑

void MainWindow2::on_pushButtonEquals_clicked()
{
    if (!pendingOperator.isEmpty() && !inputString.isEmpty()) {
        operand2 = inputString.toDouble();

        double result = 0;
        if (pendingOperator == "+") {
            result = operand1 + operand2;
        } else if (pendingOperator == "-") {
            result = operand1 - operand2;
        } else if (pendingOperator == "*") {
            result = operand1 * operand2;
        } else if (pendingOperator == "/") {
            if (operand2 == 0) {
                QMessageBox::warning(this, "错误", "不能除以零。");
                return;
            }
            result = operand1 / operand2;
        }

        // 更新label,显示计算过程
        QString displayText = QString("%1 %2 %3 = %4").arg(operand1).arg(pendingOperator).arg(operand2).arg(result);//显示计算过程

        ui->label->setText(displayText);

        // 重置状态
        pendingOperator.clear();
        inputString.clear();
        operand1 = 0;
        operand2 = 0;
        userIsTypingSecondNumber = false;
    }
}

窗口设置

void MainWindow2::on_digit_clicked()
{
    QPushButton *clickedButton = qobject_cast<QPushButton*>(sender());
    if (clickedButton) {
        QString digitValue = clickedButton->text();
        if (userIsTypingSecondNumber && pendingOperator.isEmpty()) {
            operand1 = inputString.toDouble();

            inputString.clear();
            userIsTypingSecondNumber = false;
        }

        inputString.append(digitValue);

        QPalette palette ;//设置qlabel背景
        // 设置黑底绿字
        palette .setColor(QPalette::Background, Qt::black);
        palette .setColor(QPalette::WindowText, Qt::green);
        ui->label->setAutoFillBackground(true);
        ui->label->setPalette(palette );

        ui->label->setText(inputString);
    }
}

效果展示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值