qtQcombbox简易计算器加减乘除代码
时间: 2024-10-12 13:13:02 浏览: 40
caculatorv1.1_简加减乘除计算器_
在Qt中,创建一个简单的四则运算计算器可以使用`QComboBox`来选择操作符,并结合`lineEdit`显示输入数字以及结果显示。下面是一个基本的示例代码,展示了如何使用`QComboBox`来实现加法、减法、乘法和除法的功能:
```cpp
#include <QApplication>
#include <QWidget>
#include <QLineEdit>
#include <QComboBox>
class Calculator : public QWidget {
public:
Calculator(QWidget *parent = nullptr) : QWidget(parent) {
QVBoxLayout *layout = new QVBoxLayout(this);
QLabel *inputLabel = new QLabel("请输入第一个数:");
QLineEdit *num1Edit = new QLineEdit();
layout.addWidget(inputLabel);
layout.addWidget(num1Edit);
QLabel *operatorLabel = new QLabel("选择操作符:");
QComboBox *opBox = new QComboBox();
opBox->addItem("+", +); // 加法
opBox->addItem("-", -); // 减法
opBox->addItem("*", *); // 乘法
opBox->addItem("/", /); // 除法
opBox->setCurrentIndex(0); // 默认选中加法
layout.addWidget(operatorLabel);
layout.addWidget(opBox);
QLabel *resultLabel = new QLabel("结果:");
QLineEdit *resultEdit = new QLineEdit();
resultEdit->setReadOnly(true);
layout.addWidget(resultLabel);
layout.addWidget(resultEdit);
connect(opBox, &QComboBox::currentIndexChanged, this, &Calculator::updateResult);
num1Edit->returnPressed.connect([this]() { updateResult(); });
}
private slots:
void updateResult() {
double num1 = qstrtolineedit<double>(num1Edit->text().toStdString());
double num2;
switch (opBox->currentIndex()) {
case 0: // 加法
num2 = qstrtolineedit<double>(resultEdit->text().toStdString());
resultEdit->setText(QString::number(num1 + num2));
break;
case 1: // 减法
num2 = qstrtolineedit<double>(resultEdit->text().toStdString());
resultEdit->setText(QString::number(num1 - num2));
break;
case 2: // 乘法
resultEdit->setText(QString::number(num1 * num2));
break;
case 3: // 除法
if (num2 != 0) {
num2 = qstrtolineedit<double>(resultEdit->text().toStdString());
resultEdit->setText(QString::number(num1 / num2));
} else {
QMessageBox::warning(this, "错误", "除数不能为零");
}
break;
}
}
private:
template<typename T>
static T qstrtolineedit(const std::string &str) {
return static_cast<T>(atof(str.c_str()));
}
};
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
Calculator calculator;
calculator.show();
return app.exec();
}
```
这个例子中,我们创建了一个窗口,包含两个`QLineEdit`用于输入数值,一个`QComboBox`用于选择操作符,还有一个`QLineEdit`显示计算结果。当用户选择操作符并点击“Enter”键或切换到下拉框中的另一个选项时,会触发`updateResult`槽函数,根据当前选择的操作更新结果显示。
注意:此代码需要处理空值检查、类型转换异常等边界情况。`qstrtolineedit`模板函数是一个实用工具,将`std::string`转换为指定类型的值。
阅读全文