请使用Qt满足一个登录窗口 两个文本输入(账号 密码)和一个登录按键 要求有密码检测机制 同时正确的账号和密码保存在数据库中
时间: 2024-03-24 18:37:46 浏览: 18
好的,我可以为您提供一个简单的代码示例。首先,您需要在Qt中创建一个新的项目,并添加一个登录窗口,该窗口包含两个文本输入框和一个登录按钮。接下来,您需要连接到数据库并将正确的用户名和密码存储在其中。您可以使用Qt的SQL模块来实现此操作。
下面是一个简单的代码示例,用于创建一个登录窗口,并将用户名和密码存储在SQLite数据库中:
```cpp
#include <QtSql>
#include <QtWidgets>
// 定义数据库名称
#define DATABASE_NAME "login.db"
class LoginWindow : public QWidget {
public:
LoginWindow(QWidget *parent = nullptr) : QWidget(parent) {
// 设置窗口标题
setWindowTitle(tr("登录窗口"));
// 创建账号输入框
m_accountEdit = new QLineEdit(this);
m_accountEdit->setPlaceholderText(tr("请输入账号"));
// 创建密码输入框
m_passwordEdit = new QLineEdit(this);
m_passwordEdit->setPlaceholderText(tr("请输入密码"));
m_passwordEdit->setEchoMode(QLineEdit::Password);
// 创建登录按钮
m_loginButton = new QPushButton(tr("登录"), this);
// 设置布局
QVBoxLayout *layout = new QVBoxLayout(this);
layout->addWidget(m_accountEdit);
layout->addWidget(m_passwordEdit);
layout->addWidget(m_loginButton);
// 连接到数据库
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName(DATABASE_NAME);
if (!db.open()) {
QMessageBox::critical(this, tr("错误"), tr("无法连接到数据库!"));
return;
}
// 如果表不存在,则创建表
QSqlQuery query;
if (!query.exec("CREATE TABLE IF NOT EXISTS Login ("
"id INTEGER PRIMARY KEY AUTOINCREMENT,"
"username VARCHAR(20),"
"password VARCHAR(20))")) {
QMessageBox::critical(this, tr("错误"), tr("无法创建表!"));
return;
}
// 将用户名和密码插入到数据库中
if (!query.exec("INSERT INTO Login (username, password) VALUES ('admin', 'admin')")) {
QMessageBox::critical(this, tr("错误"), tr("无法插入数据!"));
return;
}
// 连接登录按钮的槽函数
connect(m_loginButton, &QPushButton::clicked, this, &LoginWindow::onLoginButtonClicked);
}
private:
QLineEdit *m_accountEdit;
QLineEdit *m_passwordEdit;
QPushButton *m_loginButton;
void onLoginButtonClicked() {
// 获取输入的用户名和密码
QString username = m_accountEdit->text();
QString password = m_passwordEdit->text();
// 查询数据库中是否存在该用户
QSqlQuery query;
query.prepare("SELECT * FROM Login WHERE username=:username AND password=:password");
query.bindValue(":username", username);
query.bindValue(":password", password);
if (!query.exec()) {
QMessageBox::critical(this, tr("错误"), tr("查询失败!"));
return;
}
// 如果存在该用户,则登录成功
if (query.next()) {
QMessageBox::information(this, tr("提示"), tr("登录成功!"));
} else {
QMessageBox::warning(this, tr("警告"), tr("用户名或密码错误!"));
}
}
};
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
LoginWindow window;
window.show();
return app.exec();
}
```
在上面的代码中,我们首先连接到SQLite数据库,并创建了一个名为`Login`的表,用于存储用户名和密码。然后,我们将用户名为`admin`,密码为`admin`的用户插入到数据库中。
在登录按钮被点击时,我们从输入框中获取用户名和密码,并查询数据库中是否存在该用户。如果存在,则登录成功,否则提示用户名或密码错误。
注意,上面的代码仅供参考,您需要根据自己的实际需求进行修改和完善。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)