当前位置:网站首页>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);
}
边栏推荐
- UNIX commands often used in work
- (top) pretty girl binary color code portal
- 氫氧化鈉是什麼?
- Unity UGUI不同的UI面板或者UI之间如何进行坐标匹配和变换
- ImportError: No module named ‘Tkinter‘
- Unconventional ending disconnected from the target VM, address: '127.0.0.1:62635', transport: 'socket‘
- Solve tensorfow GPU modulenotfounderror: no module named 'tensorflow_ core. estimator‘
- I can't stand the common annotations of idea anymore
- Batch convert txt to excel format
- I implement queue with C I
猜你喜欢
Graduation thesis project local deployment practice
SOC_ SD_ CMD_ FSM
IPage能正常显示数据,但是total一直等于0
SD_ CMD_ RECEIVE_ SHIFT_ REGISTER
U-boot initialization and workflow analysis
Solve tensorfow GPU modulenotfounderror: no module named 'tensorflow_ core. estimator‘
Light up the running light, rough notes for beginners (1)
Unforgettable summary of 2021
I implement queue with C I
Delayqueue usage and scenarios of delay queue
随机推荐
2022 PMP project management examination agile knowledge points (7)
1290_ Implementation analysis of prvtaskistasksuspended() interface in FreeRTOS
Word import literature -mendeley
611. Number of effective triangles
Chapter 2: try to implement a simple bean container
Unity UGUI不同的UI面板或者UI之间如何进行坐标匹配和变换
【Node】nvm 版本管理工具
list. files: List the Files in a Directory/Folder
Miracast技术详解(一):Wi-Fi Display
2022年PMP项目管理考试敏捷知识点(7)
PHY drive commissioning --- mdio/mdc interface Clause 22 and 45 (I)
Energy conservation and creating energy gap
Raspberry pie 4B arm platform aarch64 PIP installation pytorch
Ugnx12.0 initialization crash, initialization error (-15)
(tool use) how to make the system automatically match and associate to database fields by importing MySQL from idea and writing SQL statements
arcgis_ spatialjoin
ImportError: No module named ‘Tkinter‘
Delayqueue usage and scenarios of delay queue
Powermanagerservice (I) - initialization
The mutual realization of C L stack and queue in I