03.03 QT

1.在注册登录的练习里面,追加一个QListwidget 项目列表

要求:点击注册之后,将账号显示到 1istwidget上面去
以及,在listwidget中双击某个账号的时候,将该账号删除

Widget.h:

cpp 复制代码
#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QFile>
#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_checkBox_stateChanged(int arg1);

    void on_pushButton_clicked();

    void on_listWidget_itemDoubleClicked(QListWidgetItem *item);

private:
    Ui::Widget *ui;
    QFile file;
};
#endif // WIDGET_H

Widget.cpp:

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:/QT/project/111/day2/name.txt");
    ui->lineEdit->setText(name);

    QString ischecked = load_data("D:/QT/project/111/day2/ischecked.txt");
    if(ischecked == "1"){
        ui->checkBox->setChecked(1);
    }
    if(ui->checkBox->isChecked()){
        QString pswd = load_data("D:/QT/project/111/day2/pswd.txt");
        ui->lineEdit_2->setText(pswd);
    }
    connect(ui->pushButton, &QPushButton::clicked, this, &Widget::on_pushButton_clicked);
}

Widget::~Widget()
{
    QString name = ui->lineEdit->text();
    QString pswd = ui->lineEdit_2->text();
    save_data("D:/QT/project/111/day2/name.txt",name);
    save_data("D:/QT/project/111/day2/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_checkBox_stateChanged(int state)
{
    //参数state为勾选框状态改变后的当前状态
    //0表示未勾选状态,2表示勾选状态
    if(state == 0){
        save_data("D:/QT/project/111/day2/ischecked.txt","0");
    }else if(state == 2){
        save_data("D:/QT/project/111/day2/ischecked.txt","1");
    }
}


void Widget::on_pushButton_clicked()
{
    QString account = ui->lineEdit->text();
       if (!account.isEmpty()) {
           // 检查 QListWidget 中是否已经存在相同的账号
           QList<QListWidgetItem *> items = ui->listWidget->findItems(account, Qt::MatchExactly);

           if (items.isEmpty()) { // 如果账号不存在
               QListWidgetItem *item = new QListWidgetItem(account);
               ui->listWidget->addItem(item);
           }
       }
}

void Widget::on_listWidget_itemDoubleClicked(QListWidgetItem *item)
{
    delete  ui->listWidget->takeItem(ui->listWidget->row(item));
}

main.cpp:

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界面:

相关推荐
大橘38 分钟前
【qml-11】Quick3D实现机器人欧拉旋转、拖动视角
qt·3d·机器人·qml
枫叶丹443 分钟前
【Qt开发】输入类控件(三)-> QComboBox
开发语言·qt
K 旺仔小馒头1 小时前
【代码的暴力美学】-- C语言基础编程题_2
c语言·开发语言·刷题
MediaTea1 小时前
Python 编辑器:Visual Studio Code
开发语言·ide·vscode·python·编辑器
懒羊羊不懒@1 小时前
C语言指针进阶(进阶)
java·开发语言·面试
前路不黑暗@1 小时前
Java:代码块
java·开发语言·经验分享·笔记·python·学习·学习方法
Pocker_Spades_A1 小时前
C++程序设计上机作业(1)
开发语言·c++
乱飞的秋天2 小时前
C++中的特殊成员函数
开发语言·c++
小严家2 小时前
Flutter完整开发指南 | Flutter&Dart – The Complete Guide
开发语言·flutter
宇宙的尽头是PYTHON2 小时前
用生活中的实例解释java的类class和方法public static void main
java·开发语言·生活