当前位置:网站首页>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 :
边栏推荐
- mamp下缺少pcntl扩展的解决办法,Fatal error: Call to undefined function pcntl_signal()
- Google Earth engine (GEE) - tasks upgrade enables run all to download all images in task types with one click
- qt绘制网络拓补图(连接数据库,递归函数,无限绘制,可拖动节点)
- Redis:Redis消息的发布与订阅(了解)
- 微信公众号解决从自定义菜单进入的缓存问题
- MariaDB's Galera cluster application scenario -- multi master and multi active databases
- MariaDB的Galera集群应用场景--数据库多主多活
- HMS core unified scanning service
- Redis démarrer le tutoriel complet: Pipeline
- Redis入门完整教程:列表讲解
猜你喜欢
The initial trial is the cross device model upgrade version of Ruijie switch (taking rg-s2952g-e as an example)
一次edu证书站的挖掘
Qualcomm WLAN framework learning (30) -- components supporting dual sta
A complete tutorial for getting started with redis: transactions and Lua
A complete tutorial for getting started with redis: hyperloglog
A complete tutorial for getting started with redis: getting to know redis for the first time
debug和release的区别
OSEK标准ISO_17356汇总介绍
CTF競賽題解之stm32逆向入門
Redis入门完整教程:初识Redis
随机推荐
时间 (计算)总工具类 例子: 今年开始时间和今年结束时间等
Docker镜像的缓存特性和Dockerfile
【js】-【排序-相关】-笔记
Redis introduction complete tutorial: Collection details
Network namespace
Stm32 Reverse Introduction to CTF Competition Interpretation
法国学者:最优传输理论下对抗攻击可解释性探讨
刷题指南-public
Galera cluster of MariaDB - dual active and dual active installation settings
A complete tutorial for getting started with redis: Pipeline
heatmap. JS picture hotspot heat map plug-in
JS card style countdown days
JS 3D explosive fragment image switching JS special effect
How can enterprises cross the digital divide? In cloud native 2.0
SHP data making 3dfiles white film
[try to hack] wide byte injection
实战模拟│JWT 登录认证
字体设计符号组合多功能微信小程序源码
微信公众号解决从自定义菜单进入的缓存问题
Redis入门完整教程:Redis Shell