构造函数 LoginDialog::LoginDialog(QWidget *parent):
// 头文件 LoginDialog.h
#ifndef LOGINDIALOG_H
#define LOGINDIALOG_H
#include <QWidget>
#include <QLineEdit>
#include <QPushButton>
#include <QLabel>
class LoginDialog : public QWidget {
Q_OBJECT
public:
LoginDialog(QWidget *parent = nullptr);
private slots:
void loginPressed();
private:
QLineEdit *lineEdit1;
QLineEdit *lineEdit2;
}
#endif // LOGINDIALOG_
设置对话框的窗口标题为 “登录”。
创建了两个标签 label1 和 label2,分别用于显示 “用户名:” 和 “密码:”。
创建了两个单行文本框 lineEdit1 和 lineEdit2,用于用户输入用户名和密码。
设置了密码输入框 lineEdit2 的回显模式为密码模式,以隐藏输入的文本。
创建了两个按钮 loginButton 和 cancelButton,分别用于执行登录和取消操作。
使用 connect 函数将 loginButton 的点击事件与 loginPressed 槽函数连接,用于处理登录逻辑。
使用 connect 函数将 cancelButton 的点击事件与对话框的关闭函数连接,用于取消登录操作。
成员函数 LoginDialog::loginPressed():
#include "LoginDialog.h"
#include <QMessageBox>
LoginDialog::LoginDialog(QWidget *parent) : QWidget(parent) {
setWindowTitle("登录");
QLabel *label1 = new QLabel("用户名:", this);
QLabel *label2 = new QLabel("密码:", this);
label1->move(50, 10);
label2->move(50, 50);
lineEdit1 = new QLineEdit(this);
lineEdit1->setPlaceholderText("请输入用户名");
lineEdit1->move(100, 10);
lineEdit1->resize(150, 20);
lineEdit2 = new QLineEdit(this);
lineEdit2->setPlaceholderText("请输入密码");
lineEdit2->setEchoMode(QLineEdit::Password);
lineEdit2->move(100, 50);
lineEdit2->resize(150, 20);
QPushButton *loginButton = new QPushButton("登录", this);
loginButton->move(100, 90);
QPushButton *cancelButton = new QPushButton("取消", this);
cancelButton->move(200, 90);
connect(loginButton, &QPushButton::clicked, this, &LoginDialog::loginPressed);
connect(cancelButton, &QPushButton::clicked, this, &QWidget::close);
void LoginDialog::loginPressed() {
QString username = lineEdit1->text();
QString password = lineEdit2->text();
if (username == "admin" && password == "admin") {
QMessageBox::information(this, "登录成功", "欢迎管理员!");
} else {
QMessageBox::warning(this, "登录失败", "用户名或密码错误!");
}
}
main:
#include <QApplication>
#include "LoginDialog.h"
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
LoginDialog loginDialog;
loginDialog.show();
return app.exec();
}
获取 lineEdit1 和 lineEdit2 中输入的用户名和密码。
进行简单的验证逻辑:如果用户名和密码都是 “admin”,则显示登录成功的信息框,否则显示登录失败的警告框。