QT学习总结--Qsqlite

zhy

发布于 2020.03.22 10:29 阅读 2473 评论 0

  最近在学习QT,做了一个Qsqlite的登录功能。

  首先是设计登录界面:

 

void MainWindow::init(){
    //全屏
    showFullScreen();
    //设置用户名输入行的坐标,图标,圆角边框,提示信息
    ui->userNameLine->setGeometry(750,400,420,50);
    ui->userNameLine->addAction(userAct,QLineEdit::LeadingPosition);
    ui->userNameLine->setStyleSheet("border:2px groove gray;border-radius:20px;padding:2px 4px");
    ui->userNameLine->setPlaceholderText("请输入账号");
    //设置密码输入行的坐标,图标,圆角边框,提示信息
    ui->passwordLine->setGeometry(750,500,420,50);
    ui->passwordLine->addAction(passwordAct,QLineEdit::LeadingPosition);
    ui->passwordLine->setStyleSheet("border:2px groove gray;border-radius:20px;padding:2px 4px");
    ui->passwordLine->setPlaceholderText("请输入密码");
    //设置登录按钮和退出按钮
    ui->loginButton->setGeometry(750,600,380,90);
    ui->exitButton->setGeometry(width()-150,height()-150,90,70);
    ui->loginButton->setStyleSheet("border-image: url(:/login/login_btn.png);");
    setWindowFlags(Qt::FramelessWindowHint | Qt::CustomizeWindowHint);
}

void MainWindow::paintEvent(QPaintEvent *event){
    Q_UNUSED(event);
    QPainter painter(this);
    painter.drawPixmap(0,0,width(),height(),QPixmap(":/login/bg.png"));
}

 

    界面默认是全屏并且没有标题栏,输入行使用setStyleSheet设置样式为圆角边框,通过addAction在输入行左侧添加图标,通过重写paintEvent函数绘制背景图片,右下角有退出按钮。

 

    下面是Qsqlite的查询操作(表已经建好):

 

dataBase.cpp

//建立数据库连接
dataBase::dataBase()
{   //存在连接
    if(QSqlDatabase::contains("accountData")){
        
        db = QSqlDatabase::database("accountData");
    }else{
        //第一个参数为数据库驱动名称
        //第二个参数是数据库连接名称,如果不填写,会有一个默认名称。
        db = QSqlDatabase::addDatabase("QSQLITE", "accountData");
        //设置数据库名
        db.setDatabaseName("account.db");
    }
}

//通过查询用户名,返回密码
QString dataBase::queryAccount(QString username){
    db.open();
    QSqlQuery query(db);
    query.exec(QObject::tr("select * from account where id = '%1'").arg(username));
    QString res;
    while(query.next()){
        qDebug()<< query.value(0)<< query.value(1);
        res = query.value(1).toString();
    }
    db.close();
    return res;
}

 

    Qsqlite的操作流程的大致为:

1. 新建数据库连接
2. 通过一些set方法进行连接的设置(比如上面的setDatabaseName)
3. 调用open方法创建实际的连接,在open之前是无法进行任何数据库操作的。
4. 进行数据库操作。
5. 关闭数据库

 

效果图: