主函数
#include "widget.h"
#include "second.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
Second s;
QObject::connect(&w,&Widget::my_signals,&s,&Second::my_slots);
w.show();
return a.exec();
}
一级界面测试文件
#include "widget.h"
#include "ui_widget.h"
#include <QDebug> // 引入QDebug类,但在这段代码中未直接使用
// Widget类的构造函数
Widget::Widget(QWidget *parent)
: QWidget(parent) // 调用父类的构造函数,传入父QWidget指针
, ui(new Ui::Widget) // 创建Ui::Widget的实例,用于管理UI
{
ui->setupUi(this); // 初始化UI界面
// 设置label的背景图片,并使其内容缩放以适应label的大小
ui->label->setPixmap(QPixmap(":/pictrue/zz.gif"));
ui->label->setScaledContents(true);
// 设置第二个label的背景图片,并使其内容缩放以适应label的大小
ui->label_2->setPixmap(QPixmap(":/pictrue/userName.jpg"));
ui->label_2->setScaledContents(true);
// 设置第三个label的背景图片,并使其内容缩放以适应label的大小
ui->label_3->setPixmap(QPixmap(":/pictrue/passwd.jpg"));
ui->label_3->setScaledContents(true);
// 设置第二个输入框为密码模式,输入的文本将显示为圆点
ui->lineEdit_2->setEchoMode(QLineEdit::Password);
}
// Widget类的析构函数
Widget::~Widget()
{
delete ui; // 释放Ui::Widget实例所占用的内存
}
// 处理第三个按钮(登录按钮)点击事件的槽函数
void Widget::on_pushButton_3_clicked()
{
// 获取ui界面的账号和密码
QString userName = ui->lineEdit->text();
QString passwd = ui->lineEdit_2->text();
// 判断账号密码是否正确
if(userName == "admin" && passwd == "123456")
{
// 显示一个信息对话框,提示登录成功
QMessageBox msg(QMessageBox::Information,"提醒","登录成功!",
QMessageBox::Ok,this);
int ret=msg.exec(); // 执行对话框,并等待用户响应
if(ret==QMessageBox::Ok)
{
emit my_signals(); // 发射自定义信号
this->close(); // 关闭当前窗口
}
}
else
{
// 显示一个警告对话框,询问是否重新登入
QMessageBox msg(QMessageBox::Warning,"登入失败","是否重新登入!",
QMessageBox::Yes|QMessageBox::No,this);
int ret=msg.exec(); // 执行对话框,并等待用户响应
if(ret==QMessageBox::Yes)
{
ui->lineEdit->clear(); // 清除账号输入框
ui->lineEdit_2->clear(); // 清除密码输入框
}
else
{
this->close(); // 关闭当前窗口
}
}
}
// 处理第四个按钮(退出按钮)点击事件的槽函数
void Widget::on_pushButton_4_clicked()
{
// 显示一个询问对话框,询问是否退出登入
QMessageBox msg(QMessageBox::Question,"提醒","是否退出登入!",
QMessageBox::Yes|QMessageBox::No,this);
int ret=msg.exec(); // 执行对话框,并等待用户响应
if(ret==QMessageBox::Yes)
{
this->close(); // 退出并关闭当前窗口
}
else
{
msg.close(); // 关闭对话框但不执行其他操作
}
}
一级界面头文件
#include <QDebug>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
signals:
void my_signals();
private slots:
void on_pushButton_3_clicked();
void on_pushButton_4_clicked();
private:
Ui::Widget *ui;
};
#endif // WIDGET_H
二级界面测试文件
#include "second.h"
#include "ui_second.h"
Second::Second(QWidget *parent) :
QWidget(parent),
ui(new Ui::Second)
{
ui->setupUi(this);
}
Second::~Second()
{
delete ui;
}
void Second::my_slots()
{
this->show();
}
二级界面头文件
#ifndef SECOND_H
#define SECOND_H
#include <QWidget>
namespace Ui {
class Second;
}
class Second : public QWidget
{
Q_OBJECT
public:
explicit Second(QWidget *parent = nullptr);
~Second();
public:
void my_slots();
private:
Ui::Second *ui;
};
#endif // SECOND_H