Qt小案例《加法计算器》
2022/1/25 6:05:55
本文主要是介绍Qt小案例《加法计算器》,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Qt小案例《加法器》
要使用到的头文件
- QApplication
- QWidget
- QLabel
- QLineEdit
- QPushButton
- QDoubleValidator
- QHBoxLayout
案例的要求
- 实现一个加法器(简单的数字计算)
- 水平布局,可任意缩放
- x+y=z
- x和y只接受数字;z只能展示x+y的结果,不能编辑
- 在x和y的内容是正确之前等号的按钮是禁用的
效果展示
- x和y没有数字的时候,等号按钮是灰的(禁用的)
- x和y都有数字的时候,等号的按钮是亮的(可使用的)
- 按下“=”按钮后计算出结果,结果在第三个空显示
源代码
- main.cpp
#include <QApplication> #include "mywidget.h" //自定义的头文件,本案例的具体操作都在这里面 int main(int argc,char** args) { QApplication app(argc,args); MyWidget w; w.show(); return app.exec(); }
- mywidget.h
#ifndef MYWIDGET_H #define MYWIDGET_H #include <QWidget> //控件 #include <QPushButton> //按钮 #include <QLabel> //标签 #include <QLineEdit> //行编辑 #include <QHBoxLayout> //水平布局 #include <QDoubleValidator> //浮点数检验器 class MyWidget : public QWidget { Q_OBJECT //使用到了信号和槽,所以是Qt对C++的拓展语法,所以需要加这个宏 public: explicit MyWidget(QWidget *parent = nullptr); //构造函数声明 private: QPushButton* btn; //"=" QLabel* la; //"+" QLineEdit* x; //x+y=z QLineEdit* y; QLineEdit* z; signals: public slots: //槽函数的规定写法 void onxyEdit(); //响应x和y的编辑内容 void onBtn(); //响应"="按钮 }; #endif // MYWIDGET_H
- mywidget.cpp
#include "mywidget.h" MyWidget::MyWidget(QWidget *parent) : QWidget(parent) { //先给个个组件进行初始化操作 x=new QLineEdit(this); y=new QLineEdit(this); z=new QLineEdit(this); btn=new QPushButton("=",this); la=new QLabel("+",this); //装箱操作 QHBoxLayout* layout=new QHBoxLayout(this); layout->addWidget(x); layout->addWidget(la); layout->addWidget(y); layout->addWidget(btn); layout->addWidget(z); //设置个个组件的特性 //右对齐 x->setAlignment(Qt::AlignRight); y->setAlignment(Qt::AlignRight); z->setAlignment(Qt::AlignRight); //x,y只能输入数字,其他的不行 x->setValidator(new QDoubleValidator(this)); y->setValidator(new QDoubleValidator(this)); z->setReadOnly(true); //按钮一开始是禁用状态 btn->setEnabled(false); //连接信号与槽 //x的值改变的时候触发当前窗口的onxyEdit槽函数 connect(x,SIGNAL(textChanged(const QString&)), this,SLOT(onxyEdit())); //y的值改变的时候触发当前窗口的onxyEdit槽函数 connect(y,SIGNAL(textChanged(const QString&)), this,SLOT(onxyEdit())); //当按钮被按下的时候触发当前窗口的onBtn槽函数 connect(btn,SIGNAL(clicked(void)), this,SLOT(onBtn(void))); } //这个槽函数触发则把把按钮启动 void MyWidget::onxyEdit() { bool xok,yok; x->text().toDouble(&xok); //如果成功把QString转成double则xok==true,否则xok==false y->text().toDouble(&yok); //如果成功把QString转成double则yok==true,否则yok==false btn->setEnabled(xok && yok);//如果xok和yok都为true则btn按钮被激活(解除禁用状态) } //这个槽函数触发则把计算记过放到z框中 void MyWidget::onBtn() { //先将字符串转成数字然后才相加 double result=x->text().toDouble()+y->text().toDouble(); //显示在窗口的内容必须是字符串,所以结果算出来了要再把数字转成字符串 QString str=QString::number(result); //最后把结果给到z z->setText(str); }
这篇关于Qt小案例《加法计算器》的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-09-28微服务架构中API版本控制的实践
- 2024-09-28AI给的和自己写的Python代码,都无法改变输入框的内容,替换也不行
- 2024-09-27Sentinel配置限流资料:新手入门教程
- 2024-09-27Sentinel配置限流资料详解
- 2024-09-27Sentinel限流资料:新手入门教程
- 2024-09-26Sentinel限流资料入门详解
- 2024-09-26Springboot框架资料:初学者入门教程
- 2024-09-26Springboot框架资料详解:新手入门教程
- 2024-09-26Springboot企业级开发资料:新手入门指南
- 2024-09-26SpringBoot企业级开发资料新手指南