主页 > 互联网  > 

03.03QT

03.03QT
1.在注册登录的练习里面,追加一个QListwidget 项目列表 要求:点击注册之后,将账号显示到 1istwidget上面去 以及,在listwidget中双击某个账号的时候,将该账号删除

Widget.h:

#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:

#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:

#include "widget.h" #include <QApplication> int main(int argc, char *argv[]) { QApplication a(argc, argv); Widget w; w.show(); return a.exec(); } 2.完成一个计算器,完成 +-*/计算功能并且在对应位置显示对应的数据

UI界面:

标签:

03.03QT由讯客互联互联网栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“03.03QT