当前位置:网站首页>QT addition calculator (simple case)
QT addition calculator (simple case)
2022-07-04 23:15:00 【Yinzz2】
Learn through a small case Qt
Realization function 1. Enter two numbers , Press “=” Button to display the calculation results
2. Both operands must be legal numbers , Refuse to accept any illegal characters
3. Both operands must be legal ,“=” The button is activated , Otherwise, disable ( You can't click )
4. The control that displays the results can only be viewed and cannot be modified , But it supports copying to the clipboard
5. The size and position of all sub windows are automatically adjusted to the best with the scaling of the main window
Code section :( Difficulties have notes )
test.h
#ifndef _TEST_H
#define _TEST_H
#include<QLabel>
#include<QLineEdit> // Row edit control
#include<QHBoxLayout> // Horizontal placer
#include<QDialog>
#include<QPushButton>
#include<QDoubleValidator> // Tester
class sum:public QDialog
{
Q_OBJECT
public:
sum(void);
public slots:
void enablebutton(void);
void get_result(void);
private:
QLineEdit* edit_x;
QLineEdit* edit_y;
QLineEdit* edit_z;
QLabel* m_label;
QPushButton* m_button;
};
#endif
test.cpp
#include<test.h>
sum::sum(void)
{
/*--------**** Initialize each parameter ****---------------*/
setWindowTitle(" Calculator ");
edit_x = new QLineEdit(this); //this That is, the current parent class pointer
edit_x->setAlignment(Qt::AlignLeft); // Align text left
edit_x->setValidator(new QDoubleValidator(this)); // Set up the digital verifier , Only numeric content can be entered
edit_y = new QLineEdit(this);
edit_y->setAlignment(Qt::AlignLeft);
edit_y->setValidator(new QDoubleValidator(this));
edit_z = new QLineEdit(this);
edit_z->setAlignment(Qt::AlignLeft); // Set read-only
edit_z->setReadOnly(true);
m_label = new QLabel("+",this);
m_button = new QPushButton("=",this);
m_button->setEnabled(false); // Initially set to disabled
/*--------**** Create a horizontal layout ****---------------*/
QHBoxLayout* layout = new QHBoxLayout(this);
layout->addWidget(edit_x);
layout->addWidget(m_label);
layout->addWidget(edit_y);
layout->addWidget(m_button);
layout->addWidget(edit_z);
setLayout(layout); // Set the layout
/*-------******** Slot function and signal ******----------------*/
connect(edit_x,SIGNAL(textChanged(QString)),this,SLOT(enablebutton(void)));
connect(edit_y,SIGNAL(textChanged(QString)),this,SLOT(enablebutton(void)));
connect(m_button,SIGNAL(clicked(void)),this,SLOT(get_result(void)));
}
//text() Get input text (QString) toDouble() take QString Convert to Double
void sum::enablebutton(void)
{
bool judge_x,judge_y;
edit_x->text().toDouble(&judge_x);
edit_y->text().toDouble(&judge_y);
m_button->setEnabled(judge_x && judge_y);
}
//number(): take double convert to QString
//setText(const QString &text)
void sum::get_result(void)
{
double res = edit_x->text().toDouble() + edit_y->text().toDouble();
QString str = QString::number(res);
edit_z->setText(str);
}
main.cpp
#include<test.h>
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
sum w;
w.show();
return a.exec();
}
Experimental phenomena :
边栏推荐
- Qt个人学习总结
- Header file duplicate definition problem solving "c1014 error“
- [OpenGL] note 29 anti aliasing (MSAA)
- QT drawing network topology diagram (connecting database, recursive function, infinite drawing, dragging nodes)
- 【剑指Offer】6-10题
- [try to hack] wide byte injection
- Redis: redis message publishing and subscription (understand)
- 【ODX Studio編輯PDX】-0.2-如何對比Compare兩個PDX/ODX文件
- 位运算符讲解
- S32 Design Studio for ARM 2.2 快速入门
猜你喜欢
Redis getting started complete tutorial: hash description
Redis入门完整教程:Redis Shell
Complete tutorial for getting started with redis: bitmaps
Redis入门完整教程:初识Redis
Redis: redis configuration file related configuration and redis persistence
A complete tutorial for getting started with redis: hyperloglog
Excel shortcut keys - always add
Redis démarrer le tutoriel complet: Pipeline
Observable time series data downsampling practice in Prometheus
qt绘制网络拓补图(连接数据库,递归函数,无限绘制,可拖动节点)
随机推荐
【js】-【动态规划】-笔记
智力考验看成语猜古诗句微信小程序源码
Redis:Redis消息的发布与订阅(了解)
Redis入门完整教程:初识Redis
Talk about Middleware
头文件重复定义问题解决“C1014错误“
壁仞科技研究院前沿技术文章精选
Redis入门完整教程:集合详解
The difference between debug and release
Redis入门完整教程:事务与Lua
[crawler] jsonpath for data extraction
Excel shortcut keys - always add
LabVIEW中比较两个VI
Notepad++ -- editing skills
JS 3D explosive fragment image switching JS special effect
P2181 diagonal and p1030 [noip2001 popularization group] arrange in order
[Taichi] change pbf2d (position based fluid simulation) of Taiji to pbf3d with minimal modification
Pict generate orthogonal test cases tutorial
Qt个人学习总结
Redis: redis message publishing and subscription (understand)