EX_25/3/3
在注册登录的练习里面,追加一个QListWidget 项目列表 要求:点击注册之后,将账号显示到 listWidget上面去 以及,在listWidget中双击某个账号的时候,将该账号删除
widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QFile>
#include <QWidget>
#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 save_data(const QString& filename,const QString& data);
QString load_data(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
mian.cpp
#include "widget.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.show();
return a.exec();
}
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("E:/name.txt");
ui->lineEdit->setText(name);
QString pswd=load_data("E:/pswd.txt");
ui->lineEdit_2->setText(pswd);
}
Widget::~Widget()
{
QString name=ui->lineEdit->text();
save_data("E:/name.txt",name);
QString pswd=ui->lineEdit_2->text();
save_data("E:/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_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::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_pushButton_clicked()
{
QString text = ui->lineEdit->text();
if (!text.isEmpty()) {
QListWidgetItem* item = new QListWidgetItem(text);
ui->listWidget->addItem(item);
}
}
void Widget::on_listWidget_itemDoubleClicked(QListWidgetItem *item)
{
if (item) {
delete ui->listWidget->takeItem(ui->listWidget->row(item));
}
}
(关于勾选是否记住密码的操作并未执行)