当前位置:网站首页>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();
}
实验现象:
边栏推荐
- Hit the core in the advanced area of misc in the attack and defense world
- 剑指 Offer 67. 把字符串转换成整数
- Redis入门完整教程:HyperLogLog
- Redis入门完整教程:键管理
- Attack and defense world misc advanced grace-50
- Analysis of environmental encryption technology
- 【室友用一局王者荣耀的时间学会了用BI报表数据处理】
- On-off and on-off of quality system construction
- Principle of lazy loading of pictures
- Unity Xiuxian mobile game | Lua dynamic sliding function (specific implementation of three source codes)
猜你喜欢
Redis入门完整教程:HyperLogLog
PMO: compare the sample efficiency of 25 molecular optimization methods
[the 2023 autumn recruitment of MIHA tour] open [the only exclusive internal push code of school recruitment eytuc]
[roommate learned to use Bi report data processing in the time of King glory in one game]
Redis入门完整教程:有序集合详解
Erik baleog and Olaf, advanced area of misc in the attack and defense world
新版判断PC和手机端代码,手机端跳转手机端,PC跳转PC端最新有效代码
Attack and defense world misc advanced grace-50
P2181 对角线和P1030 [NOIP2001 普及组] 求先序排列
Duplicate ADMAS part name
随机推荐
Redis: redis configuration file related configuration and redis persistence
Attack and defense world misc advanced area can_ has_ stdio?
Is Huatai Securities a nationally recognized securities firm? Is it safe to open an account?
[sword finger offer] questions 1-5
Redis introduction complete tutorial: List explanation
UML图记忆技巧
Mongodb aggregation operation summary
Redis入门完整教程:Redis Shell
Notepad++--编辑的技巧
Wake up day, how do I step by step towards the road of software testing
ECS settings SSH key login
The overview and definition of clusters can be seen at a glance
小程序vant tab组件解决文字过多显示不全的问题
Redis入门完整教程:客户端通信协议
攻防世界 misc 进阶区 2017_Dating_in_Singapore
P2181 diagonal and p1030 [noip2001 popularization group] arrange in order
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
串口数据帧
A complete tutorial for getting started with redis: understanding and using APIs
【ODX Studio編輯PDX】-0.2-如何對比Compare兩個PDX/ODX文件