1.在注册登录的练习里面,追加一个QListWidget项目列表
要求:点击注册之后,将账号显示到列表窗口小部件上面去
以及,在列表窗口小部件中双击某个账号的时候,将该账号删除
头文件
#ifndef WIDGET_H
#define WIDGET_H
#include <QListWidgetItem>
#include <QWidget>
#include <QFile>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();void save_data(const QString& filename,const QString& data);QString load_Data(const QString& filename);//从filename文件中加载数据并以返回值返回
private slots:void on_lineEdit_2_textChanged(const QString &arg1);void on_lineEdit_textChanged(const QString &arg1);void on_pushButton_3_pressed();void on_pushButton_3_released();void on_checkBox_stateChanged(int state);void on_pushButton_2_clicked();void on_listWidget_itemDoubleClicked(QListWidgetItem *item);private:Ui::Widget *ui;QFile file;
};
#endif // WIDGET_H
源文件
#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:/name.txt");ui->lineEdit_2->setText(name);//判断上次退出前勾选的状态QString ischecked = load_Data("D:/ischeck.txt");if(ischecked=="1")//已经勾选{ui->checkBox->setChecked(1);//进入勾选状态}//记住密码if(ui->checkBox->isChecked())//是勾选状态{QString pswd = load_Data("D:/pswd.txt");ui->lineEdit->setText(pswd);}
}Widget::~Widget()
{QString name =ui->lineEdit_2->text();//记住账号save_data("D:/name.txt",name);QString pswd =ui->lineEdit->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());//把Qstring转换为QbyteArrayfile.close();
}QString Widget::load_Data(const QString &filename)
{file.setFileName(filename);file.open(QFile::ReadOnly);QByteArray arr= file.readAll();QString str = QString::fromLocal8Bit(arr);//把QbyteArray转换为Qstringfile.close();return str;
}//账号编辑器发生改变时触发的槽函数
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_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_pushButton_3_pressed()
{ui->lineEdit->setEchoMode(QLineEdit::Normal);//显示密码
}
//显示密码按钮抬起来
void Widget::on_pushButton_3_released()
{ui->lineEdit->setEchoMode(QLineEdit::Password);//隐藏密码
}void Widget::on_checkBox_stateChanged(int state)
{if(state==0)//未勾选{save_data("D:/ischeck.txt","0");}else{//勾选save_data("D:/ischeck.txt","1");}
}void Widget::on_pushButton_2_clicked()
{QString name =ui->lineEdit_2->text();//获取当前账号文本QString base =load_Data("D:/name.txt");//获取文件内账号文本if(name!=base){save_data("D:/name.txt",name);QString str =load_Data("D:/name.txt");ui->listWidget->addItem(str);//添加到Listwidget中}else{}
}void Widget::on_listWidget_itemDoubleClicked(QListWidgetItem *item)
{ui->listWidget->clear();
}
测试文件
#include "widget.h"#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;w.show();return a.exec();
}
2.完成一个计算器,ui界面如下
完成+-*/计算功能并且在对应位置显示对应的数据
头文件
#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();private slots: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_clicked();void on_pushButton_2_clicked();void on_pushButton_3_clicked();void on_pushButton_14_clicked();void on_pushButton_16_clicked();void on_pushButton_12_clicked();void on_pushButton_8_clicked();void on_pushButton_4_clicked();void on_pushButton_15_clicked();void on_pushButton_13_clicked();private:Ui::Widget *ui;bool flag;QString symbol;
};
#endif // WIDGET_H
源文件
#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);
}Widget::~Widget()
{delete ui;
}//数值按钮
void Widget::on_pushButton_9_clicked()
{if(flag == 0){QString str = ui->lineEdit->text();ui->lineEdit->setText(str+"1");}else{QString str = ui->lineEdit_2->text();ui->lineEdit_2->setText(str+"1");}
}void Widget::on_pushButton_10_clicked()
{if(flag == 0){QString str = ui->lineEdit->text();ui->lineEdit->setText(str+"2");}else{QString str = ui->lineEdit_2->text();ui->lineEdit_2->setText(str+"2");}
}void Widget::on_pushButton_11_clicked()
{if(flag == 0){QString str = ui->lineEdit->text();ui->lineEdit->setText(str+"3");}else{QString str = ui->lineEdit_2->text();ui->lineEdit_2->setText(str+"3");}
}void Widget::on_pushButton_5_clicked()
{if(flag == 0){QString str = ui->lineEdit->text();ui->lineEdit->setText(str+"4");}else{QString str = ui->lineEdit_2->text();ui->lineEdit_2->setText(str+"4");}
}void Widget::on_pushButton_6_clicked()
{if(flag == 0){QString str = ui->lineEdit->text();ui->lineEdit->setText(str+"5");}else{QString str = ui->lineEdit_2->text();ui->lineEdit_2->setText(str+"5");}
}void Widget::on_pushButton_7_clicked()
{if(flag == 0){QString str = ui->lineEdit->text();ui->lineEdit->setText(str+"6");}else{QString str = ui->lineEdit_2->text();ui->lineEdit_2->setText(str+"6");}
}void Widget::on_pushButton_clicked()
{if(flag == 0){QString str = ui->lineEdit->text();ui->lineEdit->setText(str+"7");}else{QString str = ui->lineEdit_2->text();ui->lineEdit_2->setText(str+"7");}
}void Widget::on_pushButton_2_clicked()
{if(flag == 0){QString str = ui->lineEdit->text();ui->lineEdit->setText(str+"8");}else{QString str = ui->lineEdit_2->text();ui->lineEdit_2->setText(str+"8");}
}void Widget::on_pushButton_3_clicked()
{if(flag == 0){QString str = ui->lineEdit->text();ui->lineEdit->setText(str+"9");}else{QString str = ui->lineEdit_2->text();ui->lineEdit_2->setText(str+"9");}
}void Widget::on_pushButton_14_clicked()
{if(flag == 0){QString str = ui->lineEdit->text();ui->lineEdit->setText(str+"0");}else{QString str = ui->lineEdit_2->text();ui->lineEdit_2->setText(str+"0");}
}//符号按钮
//+
void Widget::on_pushButton_16_clicked()
{flag = 1;symbol = "+";ui->label->setText("+");
}//-
void Widget::on_pushButton_12_clicked()
{flag = 1;symbol = "-";ui->label->setText("-");
}//*
void Widget::on_pushButton_8_clicked()
{flag = 1;symbol = "*";ui->label->setText("*");
}//"/"
void Widget::on_pushButton_4_clicked()
{flag = 1;symbol = "/";ui->label->setText("/");
}//=
void Widget::on_pushButton_15_clicked()
{QString str = ui->lineEdit->text();QString ptr = ui->lineEdit_2->text();double x = str.toInt();double y = ptr.toInt();if(symbol == "+"){double num = x + y;QString str = QString::number(num);ui->lineEdit_3->setText(str);}if(symbol == "-"){double num = x - y;QString str = QString::number(num);ui->lineEdit_3->setText(str);}if(symbol == "*"){double num = x * y;QString str = QString::number(num);ui->lineEdit_3->setText(str);}if(symbol == "/"){double num = x / y;QString str = QString::number(num);ui->lineEdit_3->setText(str);}
}//"清除"
void Widget::on_pushButton_13_clicked()
{flag = 0;ui->lineEdit->clear();ui->lineEdit_2->clear();ui->lineEdit_3->clear();ui->label->clear();
}
测试文件
#include "widget.h"#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;w.show();return a.exec();
}