QT中怎样通过文本框输入的内容给结构体并保存到txt中

  1. 初学qt做了一个登录窗口,注册那里想用结构体将用户输入的注册名字和密码按顺序挨个储存到一个txt中。
  2. 这个txt应该相当于一个数据库,有1234……顺序下去的编号,每注册一个就自动编号
  3. 注册时点下确定会检测txt文件看看是否用户名重复
  4. 登录的时候,点下确定会跟文件检测是不是里面的用户名和相应密码
  5. 我现在已经实窗口的切换,主要卡在结构体和把txt弄成像数据库一样这里。

txt当数据库未免也太。。。

你可以用mysql、access、sqlite之类的也行啊,实在嫌麻烦想用文本文档来存储的话那就用配置文件吧

创建user.ini

[password]

1=111

2=222

.......

判断重复:

QSettings setini("user.ini",QSettings::IniFormat);
if(setini.contains("password/4"))

{

    if(你输入的密码==setini.value("password/4"))

        登录成功;

    else

        密码错误!;

}

 

我现在已经到将QStringList写入txt的步骤了但是写入出错了。

注册窗口程序如下:

#include "form.h"
#include "ui_form.h"
#include "widget.h"
 
#include <QString>
#include <QFile>
#include <QStringList>
//#include <QChar>
 
Form::Form(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Form)
{
    ui->setupUi(this);
}
 
using namespace  std; 
 
struct user
{
    QString ID;
    QString  name;
    QString  password;
};
 
 
 
void Form::on_btn_reg_login_clicked()
{
    QString reg_name=ui->line_reg_name->text();
    QString reg_passwd=ui->line_reg_passwd->text();
    QString str="1|today|today";
    QStringList myList=str.split("|");
 
 
 
    if(reg_name.isEmpty())
    {
        qDebug()<<"Please set your user name"<<endl;
    }
    if(reg_passwd.isEmpty())
    {
        qDebug()<<"Please set your password"<<endl;
    }
 
    QFile file("D:/QTstudy/untitled/test.txt");
    if(!file.open(QIODevice::ReadWrite))
    {
        qDebug()<<"system error!"<<endl;
    }
    while(!file.atEnd())
    {
        QString qstr=file.readLine();
        qstr=qstr.trimmed();
 
        if(reg_name==qstr)
        {
            qDebug()<<"The user name is already taken"<<endl;
        }
        else {
        user u;
        u.ID=str.lastIndexOf(("|")+1);
        u.name= reg_name;
        u.password = reg_passwd;
        myList=u.ID,u.name,u.password;
        QTextStream out(&file);
        out<<QStringList(myList)<<endl;
        file.close();
 
 
        }
    }
}
 
void Form::on_btn_reg_quit_clicked()
{
 
}
 
Form::~Form()
{
    delete ui;
}
 

 

出错如下:

D:\QTstudy\untitled\form.cpp:67: error: no match for 'operator<<' (operand types are 'QTextStream' and 'QStringList')
         out<<QStringList(myList)<<endl;
            ^

还有一个报错是这样的:

D:\QTstudy\untitled\form.cpp:67: error: no match for 'operator<<' (operand types are 'QTextStream' and 'QStringList')
         out<<QStringList(myList)<<endl;
            ^

上面的发错了,第二个报错是这样的:

D:\QTstudy\untitled\form.cpp:65: error: no match for 'operator=' (operand types are 'QStringList' and 'QString')
         myList=u.ID,u.name,u.password;
               ^

我也不是很懂C++这一块。但是报错都是没有运算符,我想你这个out是指cout还是啥?QStringList的赋值方法是否正确?