当前位置:网站首页>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();
}
实验现象:
边栏推荐
- 集群的概述与定义,一看就会
- 企业如何跨越数字化鸿沟?尽在云原生2.0
- VIM editor knowledge summary
- 图片懒加载的原理
- Google collab trample pit
- Pagoda 7.9.2 pagoda control panel bypasses mobile phone binding authentication bypasses official authentication
- Create Ca and issue certificate through go language
- Set up a website with a sense of ceremony, and post it to 1/2 of the public network through the intranet
- Attack and defense world misc advanced grace-50
- Attack and defense world misc advanced zone 2017_ Dating_ in_ Singapore
猜你喜欢
P2181 对角线和P1030 [NOIP2001 普及组] 求先序排列
The overview and definition of clusters can be seen at a glance
MYSQL架构——用户权限与管理
Redis: redis configuration file related configuration and redis persistence
Attack and defense world misc master advanced zone 001 normal_ png
Co create a collaborative ecosystem of software and hardware: the "Joint submission" of graphcore IPU and Baidu PaddlePaddle appeared in mlperf
A complete tutorial for getting started with redis: transactions and Lua
Wake up day, how do I step by step towards the road of software testing
MYSQL架构——逻辑架构
Redis入门完整教程:Pipeline
随机推荐
Redis démarrer le tutoriel complet: Pipeline
[ODX studio edit PDX] - 0.2-how to compare two pdx/odx files of compare
攻防世界 MISC 进阶区 hit-the-core
Google collab trample pit
Attack and defense world misc advanced zone 2017_ Dating_ in_ Singapore
集群的概述与定义,一看就会
[machine learning] handwritten digit recognition
The overview and definition of clusters can be seen at a glance
Sobel filter
EditPlus--用法--快捷键/配置/背景色/字体大小
Duplicate ADMAS part name
Redis: redis configuration file related configuration and redis persistence
Summary of index operations in mongodb
攻防世界 MISC 进阶区 Erik-Baleog-and-Olaf
剑指Offer 68 - II. 二叉树的最近公共祖先
图片懒加载的原理
P2181 diagonal and p1030 [noip2001 popularization group] arrange in order
企业如何跨越数字化鸿沟?尽在云原生2.0
How to send a reliable request before closing the page
Google Earth engine (GEE) - tasks upgrade enables run all to download all images in task types with one click