当前位置:网站首页>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 :
边栏推荐
- Complete tutorial for getting started with redis: bitmaps
- Common methods in string class
- 壁仞科技研究院前沿技术文章精选
- SPH中的粒子初始排列问题(两张图解决)
- ScriptableObject
- CTF竞赛题解之stm32逆向入门
- 字体设计符号组合多功能微信小程序源码
- How can enterprises cross the digital divide? In cloud native 2.0
- Photoshop batch adds different numbers to different pictures
- D3.js+Three. JS data visualization 3D Earth JS special effect
猜你喜欢
Redis入门完整教程:有序集合详解
CTF竞赛题解之stm32逆向入门
位运算符讲解
Excel shortcut keys - always add
Docker镜像的缓存特性和Dockerfile
Galera cluster of MariaDB - dual active and dual active installation settings
qt绘制网络拓补图(连接数据库,递归函数,无限绘制,可拖动节点)
Tweenmax emoticon button JS special effect
Compare two vis in LabVIEW
Redis: redis message publishing and subscription (understand)
随机推荐
MariaDB的Galera集群应用场景--数据库多主多活
Google collab trample pit
智力考验看成语猜古诗句微信小程序源码
法国学者:最优传输理论下对抗攻击可解释性探讨
The difference between cout/cerr/clog
Photoshop batch adds different numbers to different pictures
cout/cerr/clog的区别
[crawler] XPath for data extraction
[machine learning] handwritten digit recognition
SHP data making 3dfiles white film
How can enterprises cross the digital divide? In cloud native 2.0
【js】-【动态规划】-笔记
【爬虫】数据提取之JSONpath
数据库基础知识
VIM editor knowledge summary
SPH中的粒子初始排列问题(两张图解决)
[sword finger offer] questions 1-5
MariaDB的Galera集群-双主双活安装设置
Question brushing guide public
Application of machine learning in housing price prediction