qt制作一个简易的计算器
时间: 2023-08-14 15:06:46 浏览: 133
下面是一个简易的计算器示例,使用Qt实现:
```cpp
#include <QtWidgets>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
// 创建主窗口
QWidget window;
window.setWindowTitle("Calculator");
// 创建文本框用于显示计算结果
QLineEdit* resultLineEdit = new QLineEdit(&window);
resultLineEdit->setReadOnly(true);
resultLineEdit->setAlignment(Qt::AlignRight);
resultLineEdit->setFixedHeight(30);
// 创建按钮布局
QGridLayout* buttonLayout = new QGridLayout;
// 创建数字按钮
for (int i = 0; i < 10; ++i) {
QPushButton* button = new QPushButton(QString::number(i), &window);
buttonLayout->addWidget(button, i / 3, i % 3);
QObject::connect(button, &QPushButton::clicked, [=]() {
resultLineEdit->setText(resultLineEdit->text() + button->text());
});
}
// 创建运算符按钮
QStringList operators = { "+", "-", "*", "/" };
for (int i = 0; i < operators.size(); ++i) {
QPushButton* button = new QPushButton(operators.at(i), &window);
buttonLayout->addWidget(button, i + 3, 3);
QObject::connect(button, &QPushButton::clicked, [=]() {
resultLineEdit->setText(resultLineEdit->text() + " " + button->text() + " ");
});
}
// 创建等号按钮
QPushButton* equalButton = new QPushButton("=", &window);
buttonLayout->addWidget(equalButton, 6, 2);
QObject::connect(equalButton, &QPushButton::clicked, [=]() {
QString expression = resultLineEdit->text();
QScriptEngine engine;
QScriptValue result = engine.evaluate(expression);
resultLineEdit->setText(result.toString());
});
// 创建清除按钮
QPushButton* clearButton = new QPushButton("C", &window);
buttonLayout->addWidget(clearButton, 6, 0);
QObject::connect(clearButton, &QPushButton::clicked, [=]() {
resultLineEdit->clear();
});
// 创建布局并设置主窗口布局
QVBoxLayout* mainLayout = new QVBoxLayout(&window);
mainLayout->addWidget(resultLineEdit);
mainLayout->addLayout(buttonLayout);
// 显示主窗口
window.setLayout(mainLayout);
window.show();
return app.exec();
}
```
上述代码创建了一个简易的计算器界面,包括一个用于显示计算结果的文本框和数字、运算符按钮。用户可以通过点击按钮输入数字和运算符,并通过点击"="按钮执行计算并显示结果。"C"按钮用于清除文本框内容。
注意:该计算器使用Qt的QScriptEngine类来实现计算功能。它可以解析并计算基本的数学表达式。如果您需要更复杂的计算功能,可能需要使用其他的数学库或编写自己的计算逻辑。
希望这个示例对您有所帮助!如果您有任何疑问,请随时提问。
阅读全文