当前位置:网站首页>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;
};
#endif
test.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();
}
实验现象:
边栏推荐
- [Jianzhi offer] 6-10 questions
- 攻防世界 MISC 进阶区 hong
- 攻防世界 MISC 进阶区 3-11
- Redis入门完整教程:Bitmaps
- 【剑指Offer】6-10题
- Redis入门完整教程:发布订阅
- Business is too busy. Is there really no reason to have time for automation?
- PMO: compare the sample efficiency of 25 molecular optimization methods
- Sword finger offer 68 - I. nearest common ancestor of binary search tree
- 攻防世界 misc 进阶区 2017_Dating_in_Singapore
猜你喜欢
Attack and Defense World MISC Advanced Area Erik baleog and Olaf
攻防世界 misc 进阶区 2017_Dating_in_Singapore
[graph theory] topological sorting
EditPlus--用法--快捷键/配置/背景色/字体大小
Mongodb aggregation operation summary
串口数据帧
攻防世界 MISC 进阶区 Erik-Baleog-and-Olaf
Google Earth engine (GEE) - tasks upgrade enables run all to download all images in task types with one click
Redis入门完整教程:HyperLogLog
Redis的持久化机制
随机推荐
MYSQL架构——用户权限与管理
Redis入门完整教程:GEO
Redis démarrer le tutoriel complet: Pipeline
The new version judges the code of PC and mobile terminal, the mobile terminal jumps to the mobile terminal, and the PC jumps to the latest valid code of PC terminal
Redis getting started complete tutorial: Geo
P2181 对角线和P1030 [NOIP2001 普及组] 求先序排列
Advanced area a of attack and defense world misc Masters_ good_ idea
云服务器设置ssh密钥登录
The difference between Max and greatest in SQL
Redis入门完整教程:发布订阅
新版判断PC和手机端代码,手机端跳转手机端,PC跳转PC端最新有效代码
The small program vant tab component solves the problem of too much text and incomplete display
浅聊一下中间件
Wake up day, how do I step by step towards the road of software testing
A complete tutorial for getting started with redis: understanding and using APIs
攻防世界 misc 进阶区 2017_Dating_in_Singapore
A complete tutorial for getting started with redis: transactions and Lua
Analysis of the self increasing and self decreasing of C language function parameters
MySQL Architecture - logical architecture
剑指Offer 68 - II. 二叉树的最近公共祖先