界面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);
}
}
效果展示