当前位置: 首页 > news >正文

QT实现计算器

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_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    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_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    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();
}

 

 

 

相关文章:

  • MYSQL中使用EXPLAIN关键字分析查询的执行计划
  • 移动端国际化翻译同步解决方案-V3
  • 函数的特殊形式——递归函数
  • 注意力机制详解笔记 Attention is all I donot understand!
  • 通信TCP
  • 2025 年:SAP 咨询的关键转折点
  • Linux 命令行的基本命令(生信)
  • 蓝桥杯第15届真题解析
  • JAVA面经2
  • webpack一篇
  • Java 大视界 -- Java 大数据在智能医疗远程诊断中的技术支撑与挑战(106)
  • Linux虚拟机网络配置-桥接网络配置
  • 一篇文章说清楚OKR
  • 4G工业路由器在公交充电桩中的应用与优势
  • 【三.大模型实战应用篇】【3.智能学员辅导系统:docx文档处理技巧】
  • Tauri跨平台应用开发深度解析与实战指南
  • arm | lrzsz移植记录
  • 多线程学习之路
  • 阿里云服务器部署项目笔记 实操 centos7.9
  • 《C++ primer》第二章
  • 五大白酒去年净利超1500亿元:贵州茅台862亿领跑,洋河营收净利齐降
  • 海南机场拟超23亿元收购美兰空港控股权,进一步聚焦机场主业
  • 奈雪的茶叫停“能喝奶茶就不要喝水”宣传,当地市监称不要误导消费者
  • 国铁集团郑州局预计“五一”发送642.5万人
  • 发挥全国劳模示范引领作用,加速汽车产业电智化转型
  • 中国体育报关注徐梦桃、王曼昱、盛李豪等获评全国先进工作者:为建设体育强国再立新功