当前位置:网站首页>QT small case "addition calculator"
QT small case "addition calculator"
2022-07-05 07:26:00 【Cukor Chuk】
Qt Small cases 《 adder 》
Header file to be used
- QApplication
- QWidget
- QLabel
- QLineEdit
- QPushButton
- QDoubleValidator
- QHBoxLayout
Case requirements
- Implement an adder ( Simple numerical calculation )
- Horizontal layout , Can be arbitrarily scaled
- x+y=z
- x and y Accept only numbers ;z Only show x+y Result , Cannot edit
- stay x and y The content of is correct, and the equal sign button is disabled
Effect display
- x and y When there are no numbers , The equal sign button is gray ( Forbidden )

- x and y When there are numbers , The equal sign button is on ( Available )

- Press down “=” The result is calculated after the button , The result is displayed in the third blank

Source code
- main.cpp
#include <QApplication>
#include "mywidget.h" // Custom header file , The specific operations of this case are all in this
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> // Control
#include <QPushButton> // Button
#include <QLabel> // label
#include <QLineEdit> // Line edit
#include <QHBoxLayout> // Horizontal layout
#include <QDoubleValidator> // Floating point number checker
class MyWidget : public QWidget
{
Q_OBJECT // Signals and slots are used , So it is Qt Yes C++ Extended grammar of English , So you need to add this macro
public:
explicit MyWidget(QWidget *parent = nullptr); // Constructor declaration
private:
QPushButton* btn; //"="
QLabel* la; //"+"
QLineEdit* x; //x+y=z
QLineEdit* y;
QLineEdit* z;
signals:
public slots: // The specified writing method of slot function
void onxyEdit(); // Respond to x and y Edit content of
void onBtn(); // Respond to "=" Button
};
#endif // MYWIDGET_H
- mywidget.cpp
#include "mywidget.h"
MyWidget::MyWidget(QWidget *parent) : QWidget(parent)
{
// First initialize each component
x=new QLineEdit(this);
y=new QLineEdit(this);
z=new QLineEdit(this);
btn=new QPushButton("=",this);
la=new QLabel("+",this);
// Boxing operation
QHBoxLayout* layout=new QHBoxLayout(this);
layout->addWidget(x);
layout->addWidget(la);
layout->addWidget(y);
layout->addWidget(btn);
layout->addWidget(z);
// Set the characteristics of each component
// Right alignment
x->setAlignment(Qt::AlignRight);
y->setAlignment(Qt::AlignRight);
z->setAlignment(Qt::AlignRight);
//x,y You can only enter Numbers , The others can't
x->setValidator(new QDoubleValidator(this));
y->setValidator(new QDoubleValidator(this));
z->setReadOnly(true);
// The button is disabled at first
btn->setEnabled(false);
// Connect the signal to the slot
//x Trigger the current window when the value of onxyEdit Slot function
connect(x,SIGNAL(textChanged(const QString&)),
this,SLOT(onxyEdit()));
//y Trigger the current window when the value of onxyEdit Slot function
connect(y,SIGNAL(textChanged(const QString&)),
this,SLOT(onxyEdit()));
// Trigger the current window when the button is pressed onBtn Slot function
connect(btn,SIGNAL(clicked(void)),
this,SLOT(onBtn(void)));
}
// When this slot function is triggered, start the button
void MyWidget::onxyEdit()
{
bool xok,yok;
x->text().toDouble(&xok); // If you succeed QString Turn into double be xok==true, otherwise xok==false
y->text().toDouble(&yok); // If you succeed QString Turn into double be yok==true, otherwise yok==false
btn->setEnabled(xok && yok);// If xok and yok All for true be btn The button is activated ( Disable status )
}
// This slot function triggers the calculation of demerits to z In the box
void MyWidget::onBtn()
{
// First convert strings into numbers and then add
double result=x->text().toDouble()+y->text().toDouble();
// The content displayed in the window must be a string , So when the result is calculated, you need to convert the number into a string
QString str=QString::number(result);
// Finally, give the result to z
z->setText(str);
}
边栏推荐
- Microservice registry Nacos introduction
- 纯碱是做什么的?
- [untitled]
- Light up the running light, rough notes for beginners (1)
- 【obs】x264编码:“buffer_size“
- iNFTnews | 喝茶送虚拟股票?浅析奈雪的茶“发币”
- Mathematical analysis_ Notes_ Chapter 8: multiple integral
- NPM and package common commands
- [solved] there is something wrong with the image
- Concurrent programming - deadlock troubleshooting and handling
猜你喜欢

(tool use) how to make the system automatically match and associate to database fields by importing MySQL from idea and writing SQL statements

Machine learning Seaborn visualization

How to delete the virus of inserting USB flash disk copy of shortcut to

2022年PMP项目管理考试敏捷知识点(7)

PostMessage communication

I 用c I 实现队列

Solve tensorfow GPU modulenotfounderror: no module named 'tensorflow_ core. estimator‘

Literacy Ethernet MII interface types Daquan MII, RMII, smii, gmii, rgmii, sgmii, XGMII, XAUI, rxaui

Tshydro tool

Idea to view the source code of jar package and some shortcut keys (necessary for reading the source code)
随机推荐
docker安装mysql并使用navicat连接
SD_ CMD_ SEND_ SHIFT_ REGISTER
[OBS] x264 Code: "buffer_size“
Oracle code use
I 用c I 实现队列
[untitled]
Miracast技术详解(一):Wi-Fi Display
And play the little chestnut of dynamic agent
CADD课程学习(6)-- 获得已有的虚拟化合物库(Drugbank、ZINC)
[node] differences among NPM, yarn and pnpm
Application of MATLAB in Linear Algebra (4): similar matrix and quadratic form
U-boot initialization and workflow analysis
Cookie operation
【Node】nvm 版本管理工具
NPM and package common commands
Daily Practice:Codeforces Round #794 (Div. 2)(A~D)
Raspberry pie 4B arm platform aarch64 PIP installation pytorch
Negative number storage and type conversion in programs
M2DGR 多源多场景 地面机器人SLAM数据集
【无标题】