利用UI实现一个简单的用户登录界面,并实现用户登录和密码判断功能,(信号和槽函数)要求界面美观。
时间: 2024-04-12 12:31:12 浏览: 25
下面是一个使用Qt框架实现简单用户登录界面的示例代码,同时使用了信号和槽函数以及QSS(Qt样式表)来实现界面美观:
```cpp
#include <QtWidgets>
class LoginWidget : public QWidget
{
Q_OBJECT
public:
LoginWidget(QWidget *parent = nullptr) : QWidget(parent)
{
// 设置窗口标题和图标
setWindowTitle("用户登录");
setWindowIcon(QIcon(":/images/login.png"));
// 创建界面元素
QLabel *usernameLabel = new QLabel("用户名:");
QLabel *passwordLabel = new QLabel("密码:");
QLineEdit *usernameLineEdit = new QLineEdit;
QLineEdit *passwordLineEdit = new QLineEdit;
passwordLineEdit->setEchoMode(QLineEdit::Password);
QPushButton *loginButton = new QPushButton("登录");
// 创建布局
QVBoxLayout *layout = new QVBoxLayout;
layout->addWidget(usernameLabel);
layout->addWidget(usernameLineEdit);
layout->addWidget(passwordLabel);
layout->addWidget(passwordLineEdit);
layout->addWidget(loginButton);
// 设置布局
setLayout(layout);
// 连接信号和槽函数
connect(loginButton, &QPushButton::clicked, this, &LoginWidget::checkLogin);
}
signals:
void loginSucceeded();
private slots:
void checkLogin()
{
// 获取用户名和密码
QLineEdit *usernameLineEdit = findChild<QLineEdit*>("usernameLineEdit");
QLineEdit *passwordLineEdit = findChild<QLineEdit*>("passwordLineEdit");
QString username = usernameLineEdit->text();
QString password = passwordLineEdit->text();
// 判断用户名和密码是否正确
if (username == "admin" && password == "123456")
{
QMessageBox::information(this, "提示", "登录成功!");
emit loginSucceeded();
}
else
{
QMessageBox::critical(this, "错误", "用户名或密码错误!");
}
}
};
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr) : QMainWindow(parent)
{
// 设置窗口标题和图标
setWindowTitle("主窗口");
setWindowIcon(QIcon(":/images/main.png"));
// 创建登录界面
LoginWidget *loginWidget = new LoginWidget;
setCentralWidget(loginWidget);
// 连接登录成功信号
connect(loginWidget, &LoginWidget::loginSucceeded, this, &MainWindow::showMainPage);
}
private slots:
void showMainPage()
{
// 显示主页面
QMessageBox::information(this, "提示", "登录成功,跳转到主页面");
}
};
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
// 设置全局样式
QFile styleFile(":/qss/style.qss");
styleFile.open(QFile::ReadOnly);
QString styleSheet = QLatin1String(styleFile.readAll());
app.setStyleSheet(styleSheet);
MainWindow mainWindow;
mainWindow.show();
return app.exec();
}
#include "main.moc"
```
在这个示例中,我们使用了QSS(Qt样式表)来美化界面。在`main()`函数中,我们加载了一个样式表文件,并将其应用到整个应用程序中,以调整界面的外观。
请注意,以上代码只是示例,实际使用时可能需要根据具体情况进行适当修改,并准备合适的图片资源和样式表文件。