当前位置:网站首页>Qt加法计算器(简单案例)
Qt加法计算器(简单案例)
2022-07-04 22:34:00 【Yinzz2】
通过一个小案例学习Qt
实现功能1.输入两个数字,按“=”按钮显示计算结果
2.两个操作数必须都是合法的数字,拒绝接受任何非法字符
3.两个操作数必须全部合法,“=”按钮才被激活,否则禁用(不可以点击)
4.显示结果的控件只可查看不可修改,但支持复制到剪贴板
5.所有子窗口的大小和位置随主窗口的缩放自动调整至最佳
代码部分:(难点有注释)
test.h
#ifndef _TEST_H
#define _TEST_H
#include<QLabel>
#include<QLineEdit> //行编辑控件
#include<QHBoxLayout> //水平布局器
#include<QDialog>
#include<QPushButton>
#include<QDoubleValidator> //检验器
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;
};
#endiftest.cpp
#include<test.h>
sum::sum(void)
{
/*--------****初始化各个参数****---------------*/
setWindowTitle("计算器");
edit_x = new QLineEdit(this); //this即为当前父类指针
edit_x->setAlignment(Qt::AlignLeft); //文本左对齐
edit_x->setValidator(new QDoubleValidator(this)); //设置数字验证器,只能输入数字形式内容
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); //设置只读
edit_z->setReadOnly(true);
m_label = new QLabel("+",this);
m_button = new QPushButton("=",this);
m_button->setEnabled(false); //一开始设置为禁用
/*--------****创建水平方向的布局器****---------------*/
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); //设置布局器
/*-------********槽函数与信号******----------------*/
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()获取输入文本(QString) toDouble()将QString转换为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():将double转换成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();
}
实验现象:

边栏推荐
- P2181 对角线和P1030 [NOIP2001 普及组] 求先序排列
- 企业如何跨越数字化鸿沟?尽在云原生2.0
- 记录:关于Win10系统中Microsoft Edge上的网页如何滚动截屏?
- Photoshop batch adds different numbers to different pictures
- 环境加密技术解析
- A complete tutorial for getting started with redis: redis usage scenarios
- P2181 diagonal and p1030 [noip2001 popularization group] arrange in order
- A complete tutorial for getting started with redis: hyperloglog
- Redis入门完整教程:Redis Shell
- Li Kou 98: verify binary search tree
猜你喜欢

One of the commonly used technical indicators, reading boll Bollinger line indicators

Google Earth engine (GEE) - tasks upgrade enables run all to download all images in task types with one click

Redis introduction complete tutorial: client communication protocol

Attack and defense world misc master advanced zone 001 normal_ png

Redis入门完整教程:慢查询分析

新版判断PC和手机端代码,手机端跳转手机端,PC跳转PC端最新有效代码

A complete tutorial for getting started with redis: Pipeline

10 schemes to ensure interface data security

Install the gold warehouse database of NPC

Redis的持久化机制
随机推荐
剑指Offer 68 - II. 二叉树的最近公共祖先
How can enterprises cross the digital divide? In cloud native 2.0
Business is too busy. Is there really no reason to have time for automation?
[machine learning] handwritten digit recognition
Google collab trample pit
Redis: redis configuration file related configuration and redis persistence
Explanation of bitwise operators
Duplicate ADMAS part name
页面关闭前,如何发送一个可靠请求
Analysis of the self increasing and self decreasing of C language function parameters
【剑指offer】1-5题
Google Earth engine (GEE) - globfire daily fire data set based on mcd64a1
SHP data making 3dfiles white film
Redis introduction complete tutorial: slow query analysis
Attack and defense world misc advanced grace-50
A complete tutorial for getting started with redis: getting to know redis for the first time
Persistence mechanism of redis
Google Earth engine (GEE) -- take modis/006/mcd19a2 as an example to batch download the daily mean, maximum, minimum, standard deviation, statistical analysis of variance and CSV download of daily AOD
Attack and defense world misc master advanced zone 001 normal_ png
Complete tutorial for getting started with redis: bitmaps