主函数
#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_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic: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_OBJECTpublic:explicit Second(QWidget *parent = nullptr);~Second();
public:void my_slots();private:Ui::Second *ui;
};#endif // SECOND_H