qt实现登录和注销功能
时间: 2023-05-19 10:07:29 浏览: 139
可以使用Qt的信号和槽机制来实现登录和注销功能。首先,创建一个登录窗口和主窗口,登录窗口中包含用户名和密码输入框以及登录按钮,主窗口中包含注销按钮。在登录按钮的clicked信号中,检查用户名和密码是否正确,如果正确则关闭登录窗口并打开主窗口,否则弹出错误提示框。在注销按钮的clicked信号中,关闭主窗口并重新打开登录窗口。以下是示例代码:
// 登录窗口
class LoginWindow : public QWidget
{
Q_OBJECT
public:
LoginWindow(QWidget *parent = nullptr);
signals:
void loginSuccess();
private slots:
void onLoginButtonClicked();
private:
QLineEdit *m_usernameEdit;
QLineEdit *m_passwordEdit;
QPushButton *m_loginButton;
};
LoginWindow::LoginWindow(QWidget *parent)
: QWidget(parent)
{
m_usernameEdit = new QLineEdit(this);
m_passwordEdit = new QLineEdit(this);
m_passwordEdit->setEchoMode(QLineEdit::Password);
m_loginButton = new QPushButton(tr("Login"), this);
QVBoxLayout *layout = new QVBoxLayout(this);
layout->addWidget(new QLabel(tr("Username:"), this));
layout->addWidget(m_usernameEdit);
layout->addWidget(new QLabel(tr("Password:"), this));
layout->addWidget(m_passwordEdit);
layout->addWidget(m_loginButton);
connect(m_loginButton, &QPushButton::clicked, this, &LoginWindow::onLoginButtonClicked);
}
void LoginWindow::onLoginButtonClicked()
{
QString username = m_usernameEdit->text();
QString password = m_passwordEdit->text();
// 检查用户名和密码是否正确
if (username == "admin" && password == "123456") {
emit loginSuccess();
close();
} else {
QMessageBox::warning(this, tr("Error"), tr("Invalid username or password!"));
}
}
// 主窗口
class MainWindow : public QWidget
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
private slots:
void onLogoutButtonClicked();
private:
QPushButton *m_logoutButton;
};
MainWindow::MainWindow(QWidget *parent)
: QWidget(parent)
{
m_logoutButton = new QPushButton(tr("Logout"), this);
QVBoxLayout *layout = new QVBoxLayout(this);
layout->addWidget(new QLabel(tr("Welcome!"), this));
layout->addWidget(m_logoutButton);
connect(m_logoutButton, &QPushButton::clicked, this, &MainWindow::onLogoutButtonClicked);
}
void MainWindow::onLogoutButtonClicked()
{
LoginWindow *loginWindow = new LoginWindow(this);
connect(loginWindow, &LoginWindow::loginSuccess, this, &MainWindow::show);
hide();
loginWindow->show();
}
// 应用程序入口
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
LoginWindow loginWindow;
MainWindow mainWindow;
QObject::connect(&loginWindow, &LoginWindow::loginSuccess, &mainWindow, &MainWindow::show);
loginWindow.show();
return app.exec();
}