qt计算器实现加减乘除
时间: 2023-06-29 09:13:53 浏览: 55
下面是一个简单的Qt计算器的代码,可以实现加、减、乘、除的基本计算功能:
```cpp
#include <QtWidgets>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
// 创建窗口
QWidget *window = new QWidget;
window->setWindowTitle("Calculator");
// 创建布局
QVBoxLayout *layout = new QVBoxLayout;
// 创建显示屏
QLineEdit *display = new QLineEdit;
display->setReadOnly(true);
display->setAlignment(Qt::AlignRight);
layout->addWidget(display);
// 创建按钮
QGridLayout *buttonLayout = new QGridLayout;
QStringList buttons = {"7", "8", "9", "/", "4", "5", "6", "*", "1", "2", "3", "-", "0", ".", "=", "+"};
int row = 0, col = 0;
for (const QString &text : buttons) {
QPushButton *button = new QPushButton(text);
button->setFixedSize(40, 40);
buttonLayout->addWidget(button, row, col);
col++;
if (col > 3) {
col = 0;
row++;
}
}
layout->addLayout(buttonLayout);
// 连接按钮与槽函数
QObject::connect(buttonLayout, &QGridLayout::itemClicked, [&](QLayoutItem *item) {
QPushButton *button = qobject_cast<QPushButton *>(item->widget());
if (!button) {
return;
}
QString text = button->text();
if (text == "=") {
display->setText(QString::number(eval(display->text())));
} else if (text == ".") {
if (!display->text().contains(".")) {
display->setText(display->text() + ".");
}
} else {
display->setText(display->text() + text);
}
});
// 设置窗口布局
window->setLayout(layout);
window->show();
return app.exec();
}
double eval(const QString &expression)
{
QRegExp re("([\\d.]+)([+\\-*/])([\\d.]+)");
re.indexIn(expression);
double a = re.cap(1).toDouble();
double b = re.cap(3).toDouble();
QString op = re.cap(2);
if (op == "+") {
return a + b;
} else if (op == "-") {
return a - b;
} else if (op == "*") {
return a * b;
} else if (op == "/") {
return a / b;
} else {
return 0;
}
}
```
上述代码中,`eval` 函数用于计算表达式的值,`buttonLayout` 是放置计算器按钮的布局,每个按钮都连接一个匿名 lambda 表达式,用于响应按钮的点击事件。在 lambda 表达式中,如果点击的是 `=` 按钮,则调用 `eval` 函数计算表达式的值,并将结果显示在显示屏上;如果点击的是 `.` 按钮,则检查显示屏中是否已经包含了小数点,如果没有则在末尾添加一个小数点;否则将按钮的文本添加到显示屏的末尾。
阅读全文