当前位置:网站首页>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();
}
实验现象:

边栏推荐
- [try to hack] wide byte injection
- Attack and defense world misc advanced area ditf
- EditPlus--用法--快捷键/配置/背景色/字体大小
- Analysis of the self increasing and self decreasing of C language function parameters
- Pagoda 7.9.2 pagoda control panel bypasses mobile phone binding authentication bypasses official authentication
- Redis入门完整教程:HyperLogLog
- Hit the core in the advanced area of misc in the attack and defense world
- sobel过滤器
- Install the gold warehouse database of NPC
- The overview and definition of clusters can be seen at a glance
猜你喜欢

共创软硬件协同生态:Graphcore IPU与百度飞桨的“联合提交”亮相MLPerf

Unity vscode emmylua configuration error resolution

Redis introduction complete tutorial: slow query analysis

Wake up day, how do I step by step towards the road of software testing

Attack and Defense World MISC Advanced Area Erik baleog and Olaf

Redis入门完整教程:列表讲解
![[sword finger offer] questions 1-5](/img/54/b70d5290978e842939db99645c6ada.png)
[sword finger offer] questions 1-5

Redis的持久化机制

Redis入门完整教程:发布订阅
![[OpenGL] note 29 anti aliasing (MSAA)](/img/66/61f29e1c41d3099d55e2ead0a3b01e.png)
[OpenGL] note 29 anti aliasing (MSAA)
随机推荐
Advanced area of attack and defense world misc 3-11
Co create a collaborative ecosystem of software and hardware: the "Joint submission" of graphcore IPU and Baidu PaddlePaddle appeared in mlperf
Record: how to scroll screenshots of web pages on Microsoft edge in win10 system?
Sword finger offer 68 - I. nearest common ancestor of binary search tree
攻防世界 misc 进阶区 2017_Dating_in_Singapore
Unity Xiuxian mobile game | Lua dynamic sliding function (specific implementation of three source codes)
【lua】int64的支持
Redis入门完整教程:哈希说明
Redis入门完整教程:Redis Shell
9 - class
Redis入門完整教程:Pipeline
Redis入门完整教程:集合详解
Redis introduction complete tutorial: List explanation
攻防世界 MISC 进阶 glance-50
Redis入门完整教程:API的理解和使用
Redis introduction complete tutorial: slow query analysis
集群的概述与定义,一看就会
The difference between Max and greatest in SQL
Attack and defense world misc advanced area ditf
【机器学习】手写数字识别