1> 完成登录框的按钮操作,并在登录成功后进行界面跳转
两个界面的头文件
#ifndef FORM_H
#define FORM_H
#include <QWidget>
namespace Ui {
class Form;
}
class Form : public QWidget
{
Q_OBJECT
public:
explicit Form(QWidget *parent = nullptr);
~Form();
public slots:
void jump_slot();
private:
Ui::Form *ui;
};
#endif // FORM_H
#define MYWND_H //防止文件重复包含
#include <QWidget> //QWidget类所在的头文件,父类头文件
#include<QDebug>
#include<QPushButton>
QT_BEGIN_NAMESPACE
namespace Ui { class MyWnd; } //命名空间的声明
QT_END_NAMESPACE
//定义属于自己的类 MyWnd是类名,公共继承自QWidget
class MyWnd : public QWidget
{
Q_OBJECT //信号与槽的元对象
public slots:
void my_slot_1(); //自定义的槽函数
void my_slot_2();
signals:
void jump(); //自定义跳转信号
private slots:
void on_jumpBtn_clicked();
public:
MyWnd(QWidget *parent = nullptr); //构造函数的声明,有一个默认参数的形参
~MyWnd(); //析构函数额声明
private:
Ui::MyWnd *ui; //后期可以通过ui指针找到ui界面上拖拽出来的组件
};
#endif // MYWND_H
源文件
#include "form.h"
#include "ui_form.h"
Form::Form(QWidget *parent) :
QWidget(parent),
ui(new Ui::Form)
{
ui->setupUi(this);
}
Form::~Form()
{
delete ui;
}
void Form::jump_slot()
{
this->show();
}
#include "mywnd.h" //图形化界面的头文件
#include "form.h"
#include <QApplication> //应用程序的头文件
int main(int argc, char *argv[])
{
QApplication a(argc, argv); //实例化一个应用程序的对象,调用的是有参构造
MyWnd w; //在栈区实例化自定义类的对象
w.show(); //调用show函数,展示图形化界面,该函数是父类提供的,直接用即可
Form f;
//将第一个界面的信号函数与第二个界面的槽函数连接
QObject::connect(&w, &MyWnd::jump, &f, &Form::jump_slot);
return a.exec(); //为了阻塞界面不被关闭,等待相关事情发生
//等待信号与槽、事件处理、等待用户操作
}
#include "mywnd.h" //自己的头文件
#include "ui_mywnd.h" //ui界面对应的头文件
#include<QDebug>
MyWnd::MyWnd(QWidget *parent) //构造函数的定义
: QWidget(parent) //显性调用父类的构造函数完成对子类从父类继承下来成员的初始化工作
, ui(new Ui::MyWnd) //对自己类中的指针成员开辟空间
{
ui->setupUi(this); //给拖拽出来的组件实例化空间
//更改窗口标题
this->setWindowTitle("MyQQ");
//更改窗口图标
this->setWindowIcon(QIcon(":/icon/wodepeizhenshi.png"));
//更改logo图
ui->logoLab->setPixmap(QPixmap(":/icon/logo.png"));
ui->logoLab->setScaledContents(true); //设置内容自适应
//更改 账号和密码lab
ui->userNameLab->setPixmap(QPixmap(":/icon/userName.jpg"));
ui->userNameLab->setScaledContents(true);
ui->pwdLab->setPixmap(QPixmap(":/icon/passwd.jpg"));
ui->pwdLab->setScaledContents(true);
//设置账户和密码edit
ui->userNameEdit->setPlaceholderText("QQ/邮箱/手机");
ui->pwdEdit->setPlaceholderText("密码");
ui->pwdEdit->setEchoMode(QLineEdit::Password);
//对按钮设置图标
ui->loginBtn->setIcon(QIcon(":/icon/login.png"));
connect(ui->loginBtn, &QPushButton::clicked, this, &MyWnd::my_slot_1);
ui->cancelBtn->setIcon(QIcon(":/icon/cancel.png"));
connect(ui->loginBtn, &QPushButton::clicked, this, &MyWnd::my_slot_2);
}
MyWnd::~MyWnd() //析构函数的定义
{
delete ui; //释放ui指针的内存
}
void MyWnd::my_slot_1()
{
QString username = ui->userNameEdit->text();
QString psd=ui->pwdEdit->text();
qDebug() <<username;
qDebug() <<psd;
if(username=="1" && psd=="123456")
{
qDebug()<<"登录成功";
}else
{
qDebug()<<"登录失败";
}
emit jump(); //发射跳转信号
this->close();
}
void MyWnd::my_slot_2()
{
this->close();
}
2> 将模拟面试答案写在思维导图上