当前位置:网站首页>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);
}
边栏推荐
- What does soda ash do?
- Daily Practice:Codeforces Round #794 (Div. 2)(A~D)
- [untitled]
- (top) pretty girl binary color code portal
- 一文揭开,测试外包公司的真实情况
- 【idea】Could not autowire. No beans of xxx type found
- U-boot initialization and workflow analysis
- Shadowless cloud desktop - online computer
- Three body goal management notes
- arcpy. SpatialJoin_ Analysis spatial connection analysis
猜你喜欢

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

And let's play dynamic proxy (extreme depth version)

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

Unforgettable summary of 2021

Word import literature -mendeley

Tshydro tool

DelayQueue延迟队列的使用和场景

Steps and FAQs of connecting windows Navicat to Alibaba cloud server MySQL

玩转gRPC—深入概念与原理

611. Number of effective triangles
随机推荐
纯碱是做什么的?
I 用c I 实现队列
ImportError: No module named ‘Tkinter‘
[framework] multi learner
Course learning accumulation ppt
DataGrid offline installation of database driver
Ggplot2 drawing learning notes in R
【Node】npm、yarn、pnpm 区别
1290_ Implementation analysis of prvtaskistasksuspended() interface in FreeRTOS
Energy conservation and creating energy gap
Intelligent target detection 59 -- detailed explanation of pytoch focal loss and its implementation in yolov4
611. 有效三角形的个数
Simple operation of running water lamp (keil5)
The difference between NPM install -g/-save/-save-dev
Idea push project to code cloud
arcpy. SpatialJoin_ Analysis spatial connection analysis
[software testing] 02 -- software defect management
【无标题】
[idea] efficient plug-in save actions to improve your work efficiency
docker安装mysql并使用navicat连接