用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(); } ```

相关推荐

最新推荐

面向对象软件开发技术 基于QT的计算器课程报告

仿照Windows系统的计算器软件,为通用计算器设计界面,开发一款实用的计算器软件。 计算器软件基本功能: 计算器包括双目运算和单目运算功能。双目运算符包含基本的四则运算及次幂(^)功能,单目运算符包含阶乘,...

Python+Qt5+Pycharm 界面设计.docx

最近小白需要做一个计算器,但是计算机编程能力几乎没有,所以各种查阅资料,最终确认使用Python+Qt5+Pycharm做一个界面。但是过程中遇到太多的坑,所以想把过程和方法记录下来,供大家参考。

用python+pyqt5手工编写一个含交互界面的简易的词法分析器

交互界面可以用QtDesigner快速编写,或者自己写,我采用的是用可视化界面创建了一个大致的框架,然后再手动添加其他需要的控件,或者微调一些属性。 我简单设计的交互界面如图所示: 有话说: 这边以C和C++为输入...

基于Qt/Embedded的嵌入式控制界面开发

基于GPL(General Public License)架构之下的Linux,具有硬件需求低,架构开放,系统稳定,保密性好等特点,嵌入式Linux的这些优点正好符合工控领域安全性,稳定性,实时性和易维护等要求。

pyqt5对用qt designer设计的窗体实现弹出子窗口的示例

今天小编就为大家分享一篇pyqt5对用qt designer设计的窗体实现弹出子窗口的示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

stc12c5a60s2 例程

stc12c5a60s2 单片机的所有功能的实例,包括SPI、AD、串口、UCOS-II操作系统的应用。

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire

【迁移学习在车牌识别中的应用优势与局限】: 讨论迁移学习在车牌识别中的应用优势和局限

![【迁移学习在车牌识别中的应用优势与局限】: 讨论迁移学习在车牌识别中的应用优势和局限](https://img-blog.csdnimg.cn/direct/916e743fde554bcaaaf13800d2f0ac25.png) # 1. 介绍迁移学习在车牌识别中的背景 在当今人工智能技术迅速发展的时代,迁移学习作为一种强大的技术手段,在车牌识别领域展现出了巨大的潜力和优势。通过迁移学习,我们能够将在一个领域中学习到的知识和模型迁移到另一个相关领域,从而减少对大量标注数据的需求,提高模型训练效率,加快模型收敛速度。这种方法不仅能够增强模型的泛化能力,提升识别的准确率,还能有效应对数据

margin-top: 50%;

margin-top: 50%; 是一种CSS样式代码,用于设置元素的上边距(即与上方元素或父级元素之间的距离)为其父元素高度的50%。 这意味着元素的上边距将等于其父元素高度的50%。例如,如果父元素的高度为100px,则该元素的上边距将为50px。 请注意,这个值只在父元素具有明确的高度(非auto)时才有效。如果父元素的高度是auto,则无法确定元素的上边距。 希望这个解释对你有帮助!如果你还有其他问题,请随时提问。

Android通过全局变量传递数据

在Activity之间数据传递中还有一种比较实用的方式 就是全局对象 实用J2EE的读者来说都知道Java Web的四个作用域 这四个作用域从小到大分别是Page Request Session和Application 其中Application域在应用程序的任何地方都可以使用和访问 除非是Web服务器停止 Android中的全局对象非常类似于Java Web中的Application域 除非是Android应用程序清除内存 否则全局对象将一直可以访问 1 定义一个类继承Application public class MyApp extends Application 2 在AndroidMainfest xml中加入全局变量 android:name &quot; MyApp&quot; 3 在传数据类中获取全局变量Application对象并设置数据 myApp MyApp getApplication ; myApp setName &quot;jack&quot; ; 修改之后的名称 4 在收数据类中接收Application对象 myApp MyApp getApplication ;">在Activity之间数据传递中还有一种比较实用的方式 就是全局对象 实用J2EE的读者来说都知道Java Web的四个作用域 这四个作用域从小到大分别是Page Request Session和Application 其中Application域在应用程序的任何地方都可以使用和 [更多]