初学QT数据库之Qsqlite制作简单的登录注册界面
以下是一个简单的QT登录和注册界面的示例代码,使用QSqlite数据库。
首先,确保你的Qt环境已经配置好,并且包含了SQL数据库支持。
- 创建一个新的Qt Widgets Application项目。
- 在项目中添加数据库支持,确保在.pro文件中添加了
QT += sql
。 - 创建UI,添加两个按钮(登录和注册)和两个行编辑(用户名和密码)。
- 在主窗口代码中,添加数据库操作的逻辑。
以下是主窗口类的一个简单示例代码:
#include <QMainWindow>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QDebug>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private slots:
void on_loginButton_clicked();
void on_registerButton_clicked();
private:
Ui::MainWindow *ui;
QSqlDatabase db;
};
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
// 初始化数据库
db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("login_registration.db");
bool ok = db.open();
if (!ok) {
qDebug() << "Error: Unable to open database";
}
// 创建用户表
QSqlQuery query;
query.exec("CREATE TABLE IF NOT EXISTS users ("
"id INTEGER PRIMARY KEY AUTOINCREMENT, "
"username TEXT NOT NULL, "
"password TEXT NOT NULL)");
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_loginButton_clicked()
{
QString username = ui->usernameEdit->text();
QString password = ui->passwordEdit->text();
QSqlQuery query;
query.prepare("SELECT * FROM users WHERE username = :username AND password = :password");
query.bindValue(":username", username);
query.bindValue(":password", password);
query.exec();
if (query.next()) {
// 登录成功
qDebug() << "Login successful";
} else {
// 登录失败
qDebug() << "Login failed";
}
}
void MainWindow::on_registerButton_clicked()
{
QString username = ui->usernameEdit->text();
QString password = ui->passwordEdit->text();
QSqlQuery query;
query.prepare("INSERT INTO users (username, password) VALUES (:username, :password)");
query.bindValue(":username", username);
query.bindValue(":password", password);
bool success = query.exec();
if (success) {
// 注册成功
qDebug() << "Registration successful";
} else {
// 注册失败
qDebug() << "Registration failed";
评论已关闭