当前位置:网站首页>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?
- Solve tensorfow GPU modulenotfounderror: no module named 'tensorflow_ core. estimator‘
- 【无标题】
- UNIX commands often used in work
- Basic series of SHEL script (I) variables
- I implement queue with C I
- 剑指 Offer 56 数组中数字出现的次数(异或)
- ModuleNotFoundError: No module named ‘picamera‘
- Netease to B, soft outside, hard in
- DelayQueue延迟队列的使用和场景
猜你喜欢
PowerManagerService(一)— 初始化
The problem of configuring opencv in qt5.13.2 is solved in detail
Light up the running light, rough notes for beginners (1)
并查集理论讲解和代码实现
arcgis_ spatialjoin
I 用c I 实现队列
SOC_ SD_ CMD_ FSM
SOC_ SD_ DATA_ FSM
Daily Practice:Codeforces Round #794 (Div. 2)(A~D)
[idea] efficient plug-in save actions to improve your work efficiency
随机推荐
Oracle code use
IPage能正常显示数据,但是total一直等于0
CADD课程学习(5)-- 构建靶点已知的化合结构(ChemDraw)
Jenkins reported an error. Illegal character: '\ufeff'. Class, interface or enum are required
UNIX commands often used in work
Daily Practice:Codeforces Round #794 (Div. 2)(A~D)
Literacy Ethernet MII interface types Daquan MII, RMII, smii, gmii, rgmii, sgmii, XGMII, XAUI, rxaui
I can't stand the common annotations of idea anymore
[untitled]
ORACLE CREATE SEQUENCE,ALTER SEQUENCE,DROP SEQUENCE
Today, share the wonderful and beautiful theme of idea + website address
What does soda ash do?
Install deeptools in CONDA mode
U-boot initialization and workflow analysis
【Node】nvm 版本管理工具
Altimeter data knowledge point 2
[vscode] search using regular expressions
Daily Practice:Codeforces Round #794 (Div. 2)(A~D)
[OBS] x264 Code: "buffer_size“
Basic series of SHEL script (I) variables