最近在学习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. 关闭数据库
效果图:
{{ cmt.username }}
{{ cmt.content }}
{{ cmt.commentDate | formatDate('YYYY.MM.DD hh:mm') }}