当前位置:网站首页>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();
}
实验现象:
边栏推荐
- Attack and defense world misc advanced grace-50
- Attack and defense world misc advanced area can_ has_ stdio?
- [the 2023 autumn recruitment of MIHA tour] open [the only exclusive internal push code of school recruitment eytuc]
- 【ODX Studio编辑PDX】-0.2-如何对比Compare两个PDX/ODX文件
- A complete tutorial for getting started with redis: getting to know redis for the first time
- Wechat official account solves the cache problem of entering from the customized menu
- 浅聊一下中间件
- Talk about Middleware
- Redis introduction complete tutorial: slow query analysis
- How to choose a securities company? Is it safe to open an account on your mobile phone
猜你喜欢
The sandbox has reached a cooperation with digital Hollywood to accelerate the economic development of creators through human resource development
蓝队攻防演练中的三段作战
Google Earth engine (GEE) - tasks upgrade enables run all to download all images in task types with one click
【图论】拓扑排序
Redis introduction complete tutorial: Collection details
[the 2023 autumn recruitment of MIHA tour] open [the only exclusive internal push code of school recruitment eytuc]
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
Explanation of bitwise operators
Detailed explanation of heap sort code
攻防世界 MISC 进阶区 can_has_stdio?
随机推荐
Talk about Middleware
Breakpoint debugging under vs2019 c release
P2181 对角线和P1030 [NOIP2001 普及组] 求先序排列
Sword finger offer 68 - I. nearest common ancestor of binary search tree
A complete tutorial for getting started with redis: Pipeline
Explanation of bitwise operators
Feature scaling normalization
mamp下缺少pcntl扩展的解决办法,Fatal error: Call to undefined function pcntl_signal()
Analysis of environmental encryption technology
Redis入门完整教程:慢查询分析
The sandbox has reached a cooperation with digital Hollywood to accelerate the economic development of creators through human resource development
攻防世界 MISC 进阶区 hong
Insert sort, select sort, bubble sort
Common methods in string class
共创软硬件协同生态:Graphcore IPU与百度飞桨的“联合提交”亮相MLPerf
蓝队攻防演练中的三段作战
特征缩放 标准化 归一化
攻防世界 MISC 进阶区 hit-the-core
Attack and defense world misc master advanced zone 001 normal_ png
Unity vscode emmylua configuration error resolution