用qt写一个加减乘除的计算器 用到按钮
时间: 2023-09-30 19:08:38 浏览: 73
好的,我可以帮你解决这个问题。你需要先安装Qt开发环境,然后创建一个新的Qt项目。在Qt Creator中,选择 “文件” -> “新建文件或项目”,然后选择 “应用程序” -> “Qt Widgets应用程序” -> “选择”。
接下来,你需要在Qt Designer中设计一个用户界面。你可以添加按钮,文本框等控件。当用户点击按钮时,你需要连接相应的信号和槽函数来执行计算。例如,当用户点击“+”按钮时,你可以连接“clicked”信号到一个名为“additionClicked”的槽函数,该函数执行加法计算并将结果显示在文本框中。
下面是一个示例“加法”槽函数的代码:
```
void Calculator::additionClicked()
{
// 获取文本框中的数字
double num1 = ui->lineEdit_num1->text().toDouble();
double num2 = ui->lineEdit_num2->text().toDouble();
// 计算结果
double result = num1 + num2;
// 将结果显示在文本框中
ui->lineEdit_result->setText(QString::number(result));
}
```
你需要为每个按钮都创建一个类似的槽函数。最后,你需要在Qt Creator中编译并运行你的程序,就可以使用你的计算器了。
相关问题
qt实现计算器加减乘除
可以使用Qt的QLineEdit和QPushButton来实现简单的计算器加减乘除功能。在QPushButton的clicked()信号中,读取QLineEdit中的文本,然后进行相应的计算。具体实现如下:
```cpp
#include <QtWidgets/QApplication>
#include <QtWidgets/QWidget>
#include <QtWidgets/QLineEdit>
#include <QtWidgets/QPushButton>
#include <QtWidgets/QHBoxLayout>
#include <QtCore/QRegExp>
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
QWidget w;
QLineEdit *lineEdit = new QLineEdit; // 输入框
QRegExp regExp("[0-9]*"); // 正则表达式,限制只能输入数字
lineEdit->setValidator(new QRegExpValidator(regExp, lineEdit));
lineEdit->setAlignment(Qt::AlignRight); // 文本右对齐
QPushButton *btnAdd = new QPushButton("+"); // 加号按钮
QPushButton *btnSub = new QPushButton("-"); // 减号按钮
QPushButton *btnMul = new QPushButton("*"); // 乘号按钮
QPushButton *btnDiv = new QPushButton("/"); // 除号按钮
// 计算器布局
QHBoxLayout *layout = new QHBoxLayout;
layout->addWidget(lineEdit);
layout->addWidget(btnAdd);
layout->addWidget(btnSub);
layout->addWidget(btnMul);
layout->addWidget(btnDiv);
w.setLayout(layout);
QObject::connect(btnAdd, &QPushButton::clicked, [&]() {
double num1 = lineEdit->text().toDouble();
double num2 = lineEdit->text().section('+', 1).toDouble();
double result = num1 + num2;
lineEdit->setText(QString::number(result)); });
QObject::connect(btnSub, &QPushButton::clicked, [&]() {
double num1 = lineEdit->text().toDouble(); double num2 = lineEdit->text().section('-', 1).toDouble();
double result = num1 - num2;
lineEdit->setText(QString::number(result));
});
QObject::connect(btnMul, &QPushButton::clicked, [&]() {
double num1 = lineEdit->text().toDouble();
double num2 = lineEdit->text().section('*', 1).toDouble();
double result = num1 * num2;
lineEdit->setText(QString::number(result));
});
QObject::connect(btnDiv, &QPushButton::clicked, [&]() {
double num1 = lineEdit->text().toDouble();
double num2 = lineEdit->text().section('/', 1).toDouble();
double result = num1 / num2;
lineEdit->setText(QString::number(result));
});
w.show();
return app.exec();
}
```
qt计算器实现加减乘除
下面是一个简单的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` 函数计算表达式的值,并将结果显示在显示屏上;如果点击的是 `.` 按钮,则检查显示屏中是否已经包含了小数点,如果没有则在末尾添加一个小数点;否则将按钮的文本添加到显示屏的末尾。