
widget.h
- #ifndef WIDGET_H
- #define WIDGET_H
-
- #include
- #include
-
- QT_BEGIN_NAMESPACE
- namespace Ui { class Widget; }
- QT_END_NAMESPACE
-
- class Widget : public QWidget
- {
- Q_OBJECT
-
- public:
- Widget(QWidget *parent = nullptr);
- ~Widget();
- signals:
- void jump();//自定义一个跳转信号
-
- private slots:
- void on_loginbtn_clicked();
-
- void on_cancelbtn_clicked();
-
- private:
- Ui::Widget *ui;
- };
- #endif // WIDGET_H
second.h
- #ifndef SECOND_H
- #define SECOND_H
-
- #include
-
- namespace Ui {
- class second;
- }
-
- class second : public QWidget
- {
- Q_OBJECT
-
- public:
- explicit second(QWidget *parent = nullptr);
- ~second();
- public slots:
- void jumpSlot(); //对应第一个窗口信号的槽函数声明
-
- private:
- Ui::second *ui;
- };
-
- #endif // SECOND_H
main.cpp
- #include "widget.h"
- #include "second.h"
-
- #include
-
- int main(int argc, char *argv[])
- {
- QApplication a(argc, argv);
- Widget w;
- w.show();
-
- //实例化第二个窗口的对象
- second s;
-
- //将一个窗口的jump信号和第二窗口的jumpSlot槽函数连接
- QObject::connect(&w, &Widget::jump, &s, &second::jumpSlot);
- return a.exec();
- }
widget.cpp
- #include "widget.h"
- #include "ui_widget.h"
-
- Widget::Widget(QWidget *parent)
- : QWidget(parent)
- , ui(new Ui::Widget)
- {
- ui->setupUi(this);
- //窗口的相关设置
- this->setWindowTitle("QQ");
- this->setWindowIcon(QIcon(":/pictrue/qq.png"));
-
- //标签的相关设置
- ui->logolabel->setPixmap(QPixmap(":/pictrue/logo.png"));
- ui->logolabel->setScaledContents(true);
-
- //账号和密码
- ui->usernamelabel->resize(35,35);
- ui->usernamelabel->setPixmap(QPixmap(":/pictrue/userName.jpg"));
- ui->usernamelabel->setScaledContents(true);
-
- ui->passwordlabel->resize(35,35);
- ui->passwordlabel->setPixmap(QPixmap(":/pictrue/passwd.jpg"));
- ui->passwordlabel->setScaledContents(true);
-
- ui->usernamelineEdit->setPlaceholderText("QQ账号/手机号码/邮箱");
- // ui->usernamelineEdit->setSizePolicy(QSizePolicy::Preferred,QSizePolicy::Preferred);
- // ui->usernamelineEdit->adjustSize();
- ui->passwordlineEdit->setEchoMode(QLineEdit::Password);
-
- //登录按钮和取消登录按钮
- ui->loginbtn->setIcon(QIcon(":/pictrue/login.png"));
- ui->cancelbtn->setIcon(QIcon(":/pictrue/cancel.png"));
-
- //qt5版本 判断账号是否为admin,密码是否为123456
- connect(ui->loginbtn,&QPushButton::clicked,this,&Widget::on_loginbtn_clicked);
-
- }
-
- Widget::~Widget()
- {
- delete ui;
- }
-
- //登录按钮对应的槽函数
- void Widget::on_loginbtn_clicked()
- {
-
- if(ui->usernamelineEdit->text()=="admin" && ui->passwordlineEdit->text()=="123456")
- {
- QMessageBox msg(
- QMessageBox::Information,//图标
- "信息对话框", //消息对话框标题
- "登录成功", //对话框文本
- QMessageBox::Ok, //提供OK按钮
- this); //父对象
-
- //用exec()函数执行对话框
- int ret = msg.exec();
- //对用户选中的按钮进行判断
- if(ret == QMessageBox::Ok)
- {
- this->close();
- emit jump();
- }
- }
- else
- {
- QMessageBox msg(
- QMessageBox::Critical, //错误图标
- "错误对话框", //错误对话框标题
- "账号和密码不匹配", //错误对话框文本
- QMessageBox::Yes | QMessageBox::No, //提供Yes/No按钮
- this); //父对象
-
- //用exec()函数执行对话框
- int ret = msg.exec();
- //对用户选中的按钮进行判断
- if(ret == QMessageBox::Yes)
- {
- //清除密码框中的内容
- ui->passwordlineEdit->setText("");
-
- }
- else if(ret == QMessageBox::No)
- {
- //关闭登录
- this->close();
- }
- }
-
- }
-
- //取消登录按钮对应的槽函数
- void Widget::on_cancelbtn_clicked()
- {
- //直接调用静态成员函数
- int ret = QMessageBox::question(this,
- "问题对话框",
- "您是否确定要退出登录?",
- QMessageBox::Yes | QMessageBox::No);
-
- //对用户选中的按钮进行判断
- if(ret == QMessageBox::Yes)
- {
- this->close();
- }
- else if(ret == QMessageBox::No)
- {
-
- }
-
- }
second.cpp
- #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::jumpSlot()
- {
- this->show();
- }

