QT实现计算器

ops/2025/3/6 4:03:48/

1:在注册登录的练习里面,

追加一个QListWidget 项目列表

要求:点击注册之后,将账号显示到 listWidget上面去

以及,在listWidget中双击某个账号的时候,将该账号删除

Widget.h

#ifndef WIDGET_H
#define WIDGET_H#include <QByteArray>
#include <QWidget>
#include <QFile>
#include <QString>
#include <QListWidget>QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();void seve_data(const QString& filename,const QString& data);QString load_data(const QString& filename);void seve_pwd(const QString& filename,const QString& data);QString load_pwd(const QString& filename);private slots:void on_lineEdit_textChanged(const QString &arg1);void on_lineEdit_2_textChanged(const QString &arg1);void on_pushButton_3_pressed();void on_pushButton_3_released();void on_pushButton_clicked();void on_listWidget_itemDoubleClicked(QListWidgetItem *item);private:Ui::Widget *ui;QFile file;
};
#endif // WIDGET_H

Widget.cpp

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);QString name=load_data("D:/1.txt");ui->lineEdit->setText(name);QString pwd=load_pwd("D:/pwd.txt");ui->lineEdit_2->setText(pwd);
}Widget::~Widget()
{QString str=ui->lineEdit->text();seve_data("D:/1.txt",str);if(ui->checkBox->QCheckBox::checkState()==Qt::Checked){QString pwd=ui->lineEdit_2->text();seve_pwd("D:/pwd.txt",pwd);}delete ui;
}void Widget::seve_data(const QString &filename, const QString &data)
{file.setFileName(filename);file.open(QFile::WriteOnly);file.write(data.toLocal8Bit());file.close();
}QString Widget::load_data(const QString &filename)
{file.setFileName(filename);file.open(QFile::ReadOnly);QByteArray arr=file.readAll();QString str= QString::fromLocal8Bit(arr);file.close();return str;
}void Widget::seve_pwd(const QString &filename, const QString &data)
{file.setFileName(filename);file.open(QFile::WriteOnly);file.write(data.toLocal8Bit());file.close();
}QString Widget::load_pwd(const QString &filename)
{file.setFileName(filename);file.open(QFile::ReadOnly);QByteArray arr=file.readAll();QString str=QString::fromLocal8Bit(arr);file.close();return str;
}void Widget::on_lineEdit_textChanged(const QString &arg1)
{QString name=ui->lineEdit->text();QString pwd=ui->lineEdit_2->text();if(name.isEmpty() || pwd.isEmpty()){ui->pushButton->setEnabled(0);ui->pushButton_2->setEnabled(0);}else{ui->pushButton->setEnabled(1);ui->pushButton_2->setEnabled(1);}
}void Widget::on_lineEdit_2_textChanged(const QString &arg1)
{QString name=ui->lineEdit->text();QString pwd=ui->lineEdit_2->text();if(name.isEmpty() || pwd.isEmpty()){ui->pushButton->setEnabled(0);ui->pushButton_2->setEnabled(0);}else{ui->pushButton->setEnabled(1);ui->pushButton_2->setEnabled(1);}
}
//按下显示密码
void Widget::on_pushButton_3_pressed()
{ui->lineEdit_2->setEchoMode(QLineEdit::Normal);
}
//显示密码按钮弹起
void Widget::on_pushButton_3_released()
{ui->lineEdit_2->setEchoMode(QLineEdit::Password);
}void Widget::on_pushButton_clicked()
{QString name=ui->lineEdit->text();QList<QListWidgetItem *> item=ui->listWidget->findItems(name,Qt::MatchExactly);if(item.isEmpty()){ui->listWidget->addItem(name);}}void Widget::on_listWidget_itemDoubleClicked(QListWidgetItem *item)
{int row = ui->listWidget->row(item);delete ui->listWidget->takeItem(row);
}

main.cpp

#include "widget.h"#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;w.show();return a.exec();
}

 

2.完成一个计算器,ui界面如下 完成 +-*/计算功能并且在对应位置显示对应的数据

widget.h

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QString>QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();private slots:void on_pushButton_13_clicked();void on_pushButton_14_clicked();void on_pushButton_15_clicked();void on_pushButton_9_clicked();void on_pushButton_10_clicked();void on_pushButton_11_clicked();void on_pushButton_5_clicked();void on_pushButton_6_clicked();void on_pushButton_7_clicked();void on_pushButton_2_clicked();void on_pushButton_clicked();void on_pushButton_4_clicked();void on_pushButton_8_clicked();void on_pushButton_12_clicked();void on_pushButton_16_clicked();void on_pushButton_3_clicked();private:Ui::Widget *ui;QString first;QString symbol;QString second;QString equal;int falg;
};
#endif // WIDGET_H

 widget.cpp

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget),falg(0)
{ui->setupUi(this);
}Widget::~Widget()
{delete ui;
}//  1
void Widget::on_pushButton_13_clicked()
{if(falg==0){first+='1';ui->lineEdit->setText(first);}else if(falg==1){second+='1';ui->lineEdit_2->setText(second);}
}
// 2
void Widget::on_pushButton_14_clicked()
{if(falg==0){first+='2';ui->lineEdit->setText(first);}else if(falg==1){second+='2';ui->lineEdit_2->setText(second);}
}
// 3
void Widget::on_pushButton_15_clicked()
{if(falg==0){first+='3';ui->lineEdit->setText(first);}else if(falg==1){second+='3';ui->lineEdit_2->setText(second);}
}
// 4
void Widget::on_pushButton_9_clicked()
{if(falg==0){first+='4';ui->lineEdit->setText(first);}else if(falg==1){second+='4';ui->lineEdit_2->setText(second);}
}
// 5
void Widget::on_pushButton_10_clicked()
{if(falg==0){first+='5';ui->lineEdit->setText(first);}else if(falg==1){second+='5';ui->lineEdit_2->setText(second);}
}
// 6
void Widget::on_pushButton_11_clicked()
{if(falg==0){first+='6';ui->lineEdit->setText(first);}else if(falg==1){second+='6';ui->lineEdit_2->setText(second);}
}
// 7
void Widget::on_pushButton_5_clicked()
{if(falg==0){first+='7';ui->lineEdit->setText(first);}else if(falg==1){second+='7';ui->lineEdit_2->setText(second);}
}
// 8
void Widget::on_pushButton_6_clicked()
{if(falg==0){first+='8';ui->lineEdit->setText(first);}else if(falg==1){second+='8';ui->lineEdit_2->setText(second);}
}
// 9
void Widget::on_pushButton_7_clicked()
{if(falg==0){first+='9';ui->lineEdit->setText(first);}else if(falg==1){second+='9';ui->lineEdit_2->setText(second);}
}
// 0
void Widget::on_pushButton_2_clicked()
{if(falg==0){first+='0';ui->lineEdit->setText(first);}else if(falg==1){second+='0';ui->lineEdit_2->setText(second);}
}
// C
void Widget::on_pushButton_clicked()
{first.clear();ui->lineEdit->setText(first);second.clear();ui->lineEdit_2->setText(second);symbol.clear();ui->label->setText(symbol);equal.clear();ui->lineEdit_3->setText(equal);falg=0;
}
// +
void Widget::on_pushButton_4_clicked()
{falg=1;symbol='+';ui->label->setText(symbol);
}
// -
void Widget::on_pushButton_8_clicked()
{falg=1;symbol='-';ui->label->setText(symbol);
}
// *
void Widget::on_pushButton_12_clicked()
{falg=1;symbol='*';ui->label->setText(symbol);
}
// ‘/’
void Widget::on_pushButton_16_clicked()
{falg=1;symbol='/';ui->label->setText(symbol);
}
// =
void Widget::on_pushButton_3_clicked()
{falg=2;double f=atoi(first.toLocal8Bit().data());double s=atoi(second.toLocal8Bit().data());if(symbol=='+'){double result=f+s;QString r;r.setNum(result);ui->lineEdit_3->setText(r);}else if(symbol=='-'){double result=f-s;QString r;r.setNum(result);ui->lineEdit_3->setText(r);}else if(symbol=='*'){double result=f*s;QString r;r.setNum(result);ui->lineEdit_3->setText(r);}else{double result=f/s;QString r;r.setNum(result);ui->lineEdit_3->setText(r);}}

 main.cpp

#include "widget.h"#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;w.show();return a.exec();
}

 

 

 


http://www.ppmy.cn/ops/163491.html

相关文章

leetcode 56. 合并区间

题目如下 数据范围 对区间排序从左到右遍历&#xff0c;维持l作为当前区间的最左边边界就行&#xff0c;维持r作为右端点随后判断区间是否重叠。通过代码 class Solution { public:static bool cmp(const vector<int> &a,const vector<int> &b){if(a[…

单元测试与仿真程序之间的选择

为什么写这篇文章 现在的工作需求&#xff0c;让我有必要总结和整理一下。 凡事都有适用的场景。首先这里我需要提示一下&#xff0c;这里的信息&#xff0c;可能并不普适。 但是可以肯定一点的是&#xff0c;有些人&#xff0c;不论做事还是写书&#xff0c;上下文还没有交待…

【C#】检查已有窗口,防止重复打开

winform项目只允许打开一个窗口 在 WinForms 项目中&#xff0c;如果 希望 程序只允许打开一个主窗口&#xff0c;可以使用 单实例模式&#xff0c;防止用户重复启动应用程序。 ✅ 方法 1&#xff1a;检查已有窗口&#xff0c;防止重复打开&#xff08;推荐&#xff09; 如果 …

[arXiv 2025]BP-GPT: Auditory Neural Decoding Using fMRI-prompted LLM

论文网址&#xff1a;BP-GPT: Auditory Neural Decoding Using fMRI-prompted LLM 论文代码&#xff1a;https://github.com/1994cxy/BP-GPT 英文是纯手打的&#xff01;论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误&#xff0c;若有发现…

Ai-web 1.0靶场通关攻略

1.环境 虚拟机&#xff1a;kali 靶机&#xff1a;ai-web-1.0 2.获取靶机ip 确认靶机ip为192.168.13.160 3.获取绝对路径 用御剑扫描发现两个路径 http://192.168.13.160/robots. txt和http://192.168.13.160/index.html 发现一些路径 用kali的dirb扫描发现一个info.php文件…

Spring Cloud Alibaba学习 4- Spring Cloud Gateway入门使用

Spring Cloud Alibaba学习 4- Spring Cloud Gateway入门使用 中文文档Spring Cloud Gateway 中文文档 一. 基本使用 1. Predicate配置 1.1 配置参数介绍 直接通过官方给的application.yml介绍&#xff0c;这里就不介绍简写方式了&#xff0c;直接介绍完整方式 spring:clo…

Jedis、Lettuce和Redisson性能设计

一、Jedis源码级学习要点 1. 线程模型与连接管理 阻塞式I/O设计&#xff1a;通过Socket直接建立连接&#xff0c;每个命令发送后线程会阻塞等待响应25连接池实现&#xff1a;JedisPool管理物理连接&#xff0c;避免线程安全问题&#xff0c;核心类GenericObjectPool实现连接复…

Skynet入门(一)

概念 skynet 是一个为网络游戏服务器设计的轻量框架。但它本身并没有任何为网络游戏业务而特别设计的部分&#xff0c;所以尽可以把它用于其它领域。 设计初衷 如何充分利用它们并行运作数千个相互独立的业务。 模块设计建议 在 skynet 中&#xff0c;用服务 (service) 这…