QT实现计算器
- 互联网
- 2025-09-14 12:03:02

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_HWidget.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_Hwidget.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(); }
下一篇
通信TCP