用qt设计一个计算器界面,实现四则运算、回车、清零功能
时间: 2023-05-23 10:05:18 浏览: 130
A:好的,我可以为您提供相关的代码示例。请参考以下内容:
首先,在Qt中使用QLineEdit控件来显示输入和计算结果:
```cpp
QLineEdit* input_box = new QLineEdit();
input_box->setReadOnly(true);
input_box->setAlignment(Qt::AlignRight);
input_box->setText("0");
```
然后,我们可以使用QPushButton控件来实现四则运算、清零和回车功能。例如,下面的代码展示如何创建一个数字按钮:
```cpp
QPushButton* button_1 = new QPushButton("1", this);
button_1->setFixedSize(50, 50);
connect(button_1, &QPushButton::clicked, this, [=](){
input_box->setText(input_box->text() + "1");
});
```
类似地,我们可以创建运算符按钮:
```cpp
QPushButton* button_plus = new QPushButton("+", this);
button_plus->setFixedSize(50, 50);
connect(button_plus, &QPushButton::clicked, this, [=](){
input_box->setText(input_box->text() + "+");
});
```
实现计算器的四则运算可以使用Qt中的QScriptEngine类:
```cpp
QScriptEngine engine;
input_box->setText(QString::number(engine.evaluate(input_box->text()).toNumber()));
```
最后,我们可以添加一个清零按钮和回车键响应:
```cpp
QPushButton* button_clear = new QPushButton("Clear", this);
button_clear->setFixedSize(50, 50);
connect(button_clear, &QPushButton::clicked, this, [=](){
input_box->setText("0");
});
connect(input_box, &QLineEdit::returnPressed, this, [=](){
QScriptEngine engine;
input_box->setText(QString::number(engine.evaluate(input_box->text()).toNumber()));
});
```
完整的计算器界面代码如下:
```cpp
#include <QtWidgets/QApplication>
#include <QtWidgets/QWidget>
#include <QtWidgets/QLineEdit>
#include <QtWidgets/QPushButton>
#include <QtScript/QScriptEngine>
class Calculator : public QWidget {
public:
Calculator(QWidget* parent = nullptr) : QWidget(parent) {
setFixedSize(220, 300);
setWindowTitle("Calculator");
QLineEdit* input_box = new QLineEdit();
input_box->setReadOnly(true);
input_box->setAlignment(Qt::AlignRight);
input_box->setFixedHeight(50);
input_box->setText("0");
QPushButton* button_1 = new QPushButton("1", this);
button_1->setFixedSize(50, 50);
connect(button_1, &QPushButton::clicked, this, [=](){
input_box->setText(input_box->text() + "1");
});
...
QPushButton* button_0 = new QPushButton("0", this);
button_0->setFixedSize(50, 50);
connect(button_0, &QPushButton::clicked, this, [=](){
if(input_box->text() == "0") return;
input_box->setText(input_box->text() + "0");
});
QPushButton* button_plus = new QPushButton("+", this);
button_plus->setFixedSize(50, 50);
connect(button_plus, &QPushButton::clicked, this, [=](){
input_box->setText(input_box->text() + "+");
});
...
QPushButton* button_clear = new QPushButton("Clear", this);
button_clear->setFixedSize(50, 50);
connect(button_clear, &QPushButton::clicked, this, [=](){
input_box->setText("0");
});
connect(input_box, &QLineEdit::returnPressed, this, [=](){
QScriptEngine engine;
input_box->setText(QString::number(engine.evaluate(input_box->text()).toNumber()));
});
QVBoxLayout* layout = new QVBoxLayout();
layout->addWidget(input_box);
QHBoxLayout* b_row1 = new QHBoxLayout();
b_row1->addWidget(button_7);
b_row1->addWidget(button_8);
b_row1->addWidget(button_9);
b_row1->addWidget(button_divide);
layout->addLayout(b_row1);
...
QHBoxLayout* b_row5 = new QHBoxLayout();
b_row5->addWidget(button_clear);
b_row5->addWidget(button_0);
b_row5->addWidget(button_equals);
b_row5->addWidget(button_plus);
layout->addLayout(b_row5);
setLayout(layout);
}
};
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
Calculator calc;
calc.show();
return app.exec();
}
```