网站设网页设计,windows怎么做网站,shopex网站首页空白,自适应网站建设极速建站QFile 类
构造函数 QFile() 无参构造 仅仅构建一个QFile 对象#xff0c;不设定文件名 QFile(文件名) 构建一个QFile对象的同时#xff0c;设定文件名 但是注意#xff0c;仅仅设定文件名#xff0c;并不会打开该文件 设定文件名 QFile file file.setFileName…QFile 类
构造函数 QFile() 无参构造 仅仅构建一个QFile 对象不设定文件名 QFile(文件名) 构建一个QFile对象的同时设定文件名 但是注意仅仅设定文件名并不会打开该文件 设定文件名 QFile file file.setFileName(文件名) 并不会打开 打开文件 file.open(打开模式) 文件写
qint64 write(const char *data, qint64 maxSize) file.write(数据,数据长度)//将data最多maxSize个字节写入file代表的文件中 qint64 write(const char *data) file.write(数据)//将data到结束符为止写入file代表的文件中 qint64 write(const QByteArray byteArray) QByteArray本质是c语言的字符数组做一段内存来管理 我们的数据一般是一个 QString 对象 so要将一个 QString 对象转换成 QByteArray 对象: QString str hello//QString有toLocal8Bit() 将QString转换成 QByteArray QByteArray qarr str.toLocal8Bit() class Widget : public QWidget
{
public:Widget(QWidget *parent nullptr);~Widget();void save_data(const QString filename,const QString data);private:Ui::Widget *ui;QFile file;
};Widget::~Widget()
{QString nameui-lineEdit-text();save_data(D:/name.text,name);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();
}
文件读
qint64 read(char *data, qint64 maxSize) char buf[64] {0} file.read(buf,64)//从file文件中读取最多64个字节的数据并且将读取到的数据写入buf中 返回读取到的数据的字节数 QByteArray read(qint64 maxSize) QByteArray qarr file.read(64)// 从file文件中读取最多64个字节的数据并且将读取到的数据构建成一个QByteArray对象后返回 将 QByteArray 数据转换成 QString 数据 1:在QByteArray 寻找返回值是 QString函数名是toXXXX形参没有的函数 2:在QString的构造函数寻找参数为 QByteArray 的构造函数 不支持中文 3:在QString的静态方法寻找返回值为 QString参数是 QByteArray的函数 找到 fromLocal8Bit(),支持中文 QByteArray readAll() QByteArray arr file.readAll()// 读取文件中的全部数据 //将读取到的数据构建成 QByteArray 后返回 Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui-setupUi(this);QString nameload_data(D:name.text);ui-lineEdit-setText(name);
}QString Widget::load_data(const QString filename)
{file.setFileName(filename);file.open(QFile::ReadOnly);QByteArray barrfile.readAll();QString strQString::fromLocal8Bit(barr);file.close();return str;
}
作业
1在注册登录的练习里面追加一个QListWidget 项目列表 要求点击注册之后将账号显示到 listWidget上面去 以及在listWidget中双击某个账号的时候将该账号删除
#ifndef WIDGET_H
#define WIDGET_H#include QWidget
#include QFile
#include QListWidgetItemQT_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);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_doubleClicked(const QModelIndex index); // 双击删除账号void on_listWidget_itemDoubleClicked(QListWidgetItem *item);private:Ui::Widget *ui;QFile file;
};#endif // WIDGET_H#include widget.h
#include ui_widget.h
#include QMessageBox
#include QDebugWidget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui-setupUi(this);// 加载用户名QString name load_data(D:/name.text);ui-lineEdit-setText(name);// 加载复选框状态QString ischeck load_data(D:/ischecked.text);if (ischeck 1) ui-checkBox-setChecked(true);// 如果复选框被选中加载密码if (ui-checkBox-isChecked()) {QString pswd load_data(D:/pswd.text);ui-lineEdit_2-setText(pswd);}// 初始化按钮状态QString nameText ui-lineEdit-text();QString pswdText ui-lineEdit_2-text();if (nameText.isEmpty() || pswdText.isEmpty()) {ui-pushButton-setEnabled(false);ui-pushButton_2-setEnabled(false);}
}Widget::~Widget()
{// 保存用户名和密码QString name ui-lineEdit-text();QString pswd ui-lineEdit_2-text();save_data(D:/name.text, name);save_data(D:/pswd.text, pswd);delete ui;
}void Widget::save_data(const QString filename, const QString data)
{file.setFileName(filename);if (!file.open(QFile::WriteOnly)) {QMessageBox::warning(this, Error, Failed to save file: filename);return;}file.write(data.toLocal8Bit());file.close();
}QString Widget::load_data(const QString filename)
{file.setFileName(filename);if (!file.open(QFile::ReadOnly)) {return QString(); // 文件不存在时返回空字符串}QByteArray barr file.readAll();QString str QString::fromLocal8Bit(barr);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(false);ui-pushButton_2-setEnabled(false);} else {ui-pushButton-setEnabled(true);ui-pushButton_2-setEnabled(true);}
}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(false);ui-pushButton_2-setEnabled(false);} else {ui-pushButton-setEnabled(true);ui-pushButton_2-setEnabled(true);}
}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 arg1)
{save_data(D:/ischecked.text, arg1 Qt::Checked ? 1 : 0);
}void Widget::on_pushButton_clicked()//注册
{// 获取用户名QString name ui-lineEdit-text();// 将用户名添加到 QListWidgetif (!name.isEmpty()) {ui-listWidget-addItem(name);QMessageBox::information(this, 注册成功, 账号已添加到列表);} else {QMessageBox::warning(this, 注册失败, 用户名不能为空);}
}void Widget::on_listWidget_doubleClicked(const QModelIndex index)
{// 获取选中的项QListWidgetItem *item ui-listWidget-item(index.row());if (item) {// 删除选中的项delete item;QMessageBox::information(this, 删除成功, 账号已从列表中删除);}
}void Widget::on_listWidget_itemDoubleClicked(QListWidgetItem *item)
{}#include widget.h#include QApplicationint main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;w.show();return a.exec();
}