1.
#include "widget.h"
#include "ui_widget.h"
#include <QListWidgetItem>
#include <QMessageBox>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);QString name = load_date("D:/name.txt");ui->lineEdit->setText(name);QString ischecked = load_date("D:/checked.txt");// if(ischecked == "1"){ui->checkBox->setChecked(1);// }if(ui->checkBox->isChecked()){QString pswd = load_date("D:/pswd.txt");ui->lineEdit_2->setText(pswd);}// 初始化按钮状态updateButtonState();// 连接注册按钮的点击事件connect(ui->pushButton_2, &QPushButton::clicked, this, &Widget::on_pushButton_2_clicked);// 连接列表项的双击事件connect(ui->listWidget, &QListWidget::itemDoubleClicked, this, &Widget::on_listWidget_itemDoubleClicked);
}Widget::~Widget()
{QString name = ui->lineEdit->text();save_data("D:/name.txt",name);QString pswd = ui->lineEdit_2->text();save_data("D:/pswd.txt",pswd);delete ui;
}
//账号密码存
void Widget::save_data(const QString &filename, const QString &data)
{file.setFileName(filename);file.open(QFile::WriteOnly);file.write(data.toLocal8Bit());file.close();
}
//账号密码读
QString Widget::load_date(const QString &filename)
{file.setFileName(filename);file.open(QFile::ReadOnly);// char buf[64] = {0};// file.read(buf,64);QByteArray arr = file.readAll();QString str = QString::fromLocal8Bit(arr);file.close();return str;
}// 更新按钮状态
void Widget::updateButtonState()
{bool isInputValid = !ui->lineEdit->text().isEmpty() && !ui->lineEdit_2->text().isEmpty();ui->pushButton->setEnabled(isInputValid);ui->pushButton_2->setEnabled(isInputValid);
}//账号密码
void Widget::on_lineEdit_textChanged(const QString &arg1)
{QString name = ui->lineEdit->text();QString pswd = ui->lineEdit_2->text();if(name.isEmpty() || pswd.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 pswd = ui->lineEdit_2->text();if(name.isEmpty() || pswd.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_checkBox_stateChanged(int state)
{QString checkedFilePath = "checked.txt";save_data(checkedFilePath, state == Qt::Checked ? "1" : "0");}
//注册按钮
void Widget::on_pushButton_2_clicked()
{QString account = ui->lineEdit->text();if (!account.isEmpty()) {// 将账号添加到 QListWidgetui->listWidget->addItem(account);// 清空输入框ui->lineEdit->clear();ui->lineEdit_2->clear();} else {QMessageBox::warning(this, "警告", "账号不能为空!");}
}void Widget::on_listWidget_itemDoubleClicked(QListWidgetItem *item)
{// 删除双击的列表项delete item;
}
2.
#include "widget.h"
#include "ui_widget.h"
#include <QPushButton>
#include <QDebug>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);// 初始化变量firstNumber = "";secondNumber = "";currentOperator = "";// 连接数字按钮的点击事件for (int i = 0; i <= 9; ++i) {QString buttonName = "pushButton_" + QString::number(i);QPushButton* button = findChild<QPushButton*>(buttonName);if (button) {connect(button, &QPushButton::clicked, this, &Widget::onNumberClicked);}}// 连接操作符按钮的点击事件connect(ui->pushButton_8, &QPushButton::clicked, this, &Widget::onOperatorClicked); // /connect(ui->pushButton_10, &QPushButton::clicked, this, &Widget::onOperatorClicked); // *connect(ui->pushButton_12, &QPushButton::clicked, this, &Widget::onOperatorClicked); // -connect(ui->pushButton_16, &QPushButton::clicked, this, &Widget::onOperatorClicked); // +// 连接等号按钮的点击事件connect(ui->pushButton_15, &QPushButton::clicked, this, &Widget::onEqualClicked);// 连接清除按钮的点击事件connect(ui->pushButton_13, &QPushButton::clicked, this, &Widget::onClearClicked);
}Widget::~Widget()
{delete ui;
}// 处理数字按钮点击事件
void Widget::onNumberClicked()
{QPushButton* button = qobject_cast<QPushButton*>(sender());if (button) {if (currentOperator.isEmpty()) {// 如果操作符为空,输入到第一个数字firstNumber += button->text();ui->lineEdit->setText(firstNumber);} else {// 否则输入到第二个数字secondNumber += button->text();ui->lineEdit_3->setText(secondNumber);}}
}// 处理操作符按钮点击事件
void Widget::onOperatorClicked()
{QPushButton* button = qobject_cast<QPushButton*>(sender());if (button) {currentOperator = button->text(); // 保存操作符ui->lineEdit_2->setText(currentOperator); // 更新操作符显示}
}// 处理等号按钮点击事件
void Widget::onEqualClicked()
{double result = 0.0;// 根据操作符进行计算if (currentOperator == "+") {result = firstNumber.toDouble() + secondNumber.toDouble();} else if (currentOperator == "-") {result = firstNumber.toDouble() - secondNumber.toDouble();} else if (currentOperator == "*") {result = firstNumber.toDouble() * secondNumber.toDouble();} else if (currentOperator == "/") {if (secondNumber.toDouble() != 0) {result = firstNumber.toDouble() / secondNumber.toDouble();} else {ui->lineEdit_4->setText("Error: Division by zero");return;}}// 显示计算结果ui->lineEdit_4->setText(QString::number(result));
}// 处理清除按钮点击事件
void Widget::onClearClicked()
{firstNumber = ""; // 清空第一个数字secondNumber = ""; // 清空第二个数字currentOperator = ""; // 清空操作符ui->lineEdit->setText(""); // 清空第一个数字显示ui->lineEdit_2->setText(""); // 清空操作符显示ui->lineEdit_3->setText(""); // 清空第二个数字显示ui->lineEdit_4->setText(""); // 清空结果显示
}