功能添加:
1.弹窗提示
2.页面跳转 === 信号的发送,槽函数执行
form.hpublic slots:void mySlot(); //槽函数
widget.h
signals:void mySignal(QString e); //自定义属于自己的信号函数
//widget.cpp
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//设置固定大小this->setFixedSize(650,450);//改变窗体名称this->setWindowTitle("客户端");//设置窗口图标this->setWindowIcon(QIcon(":/WindowsIcon/icon/logo.png"));//上半部分背景颜色QLabel *lab2 = new QLabel(this);lab2->setFixedSize(650, 225);lab2->setAutoFillBackground(true); // 开启自动填充背景色功能QLinearGradient gradient(0, 0, 650, 225);gradient.setColorAt(0.0, QColor(157, 116, 178)); // 渐变起始颜色为红色gradient.setColorAt(0.5, QColor(99, 102, 178)); // 渐变中间颜色为黄色gradient.setColorAt(1.0, QColor(95, 168, 178)); // 渐变结束颜色为绿色QBrush brush(gradient);QPalette palette;palette.setBrush(QPalette::Background, brush);lab2->setPalette(palette);//中央logoQLabel *lab = new QLabel;lab->setPixmap(QPixmap(":/WindowsIcon/icon/1.png"));lab->setParent(this);lab->resize(125,125);lab->setScaledContents(true);//设置组件内容自适应lab->move(250,100);//用户名logoQLabel *lab_username = new QLabel(this);lab_username->setPixmap(QPixmap(":/WindowsIcon/icon/userName.jpg"));lab_username->resize(50,50);lab_username->setScaledContents(true);//设置组件内容自适应lab_username->move(100,250);//密码logoQLabel *lab_pswd = new QLabel(this);lab_pswd->setPixmap(QPixmap(":/WindowsIcon/icon/passwd.jpg"));lab_pswd->resize(50,50);lab_pswd->setScaledContents(true);//设置组件内容自适应lab_pswd->move(100,320);//用户名QLineEdit *line_username = new QLineEdit(this);line_username->setPlaceholderText("请输入用户名:"); // 设置提示文本line_username->resize(400, 50);line_username->move(150, 250);line_username->setStyleSheet("border: none; border-bottom: 1px solid black;");//密码QLineEdit *line_pswd = new QLineEdit(this);line_pswd->setPlaceholderText("请输入密码:"); // 设置提示文本line_pswd->setEchoMode(QLineEdit::Password);line_pswd->resize(400,50);line_pswd->move(150,320);line_pswd->setStyleSheet("border: none; border-bottom: 1px solid black;");//登录按钮QPushButton *btn_login = new QPushButton(this);btn_login->setIcon(QIcon(":/WindowsIcon/icon/login.png"));btn_login->setIconSize(QSize(60, 60)); // 设置图标大小btn_login->setFixedSize(60, 60); // 设置按钮大小btn_login->move(175, 385);btn_login->setStyleSheet("QPushButton { border: none; background-position: center; background-repeat: none; }");//取消按钮QPushButton *btn_cancel = new QPushButton(this);btn_cancel->setIcon(QIcon(":/WindowsIcon/icon/cancel.png"));btn_cancel->setIconSize(QSize(60, 60)); // 设置图标大小btn_cancel->setFixedSize(60, 60); // 设置按钮大小btn_cancel->move(375, 385);btn_cancel->setStyleSheet("QPushButton { border: none; background-position: center; background-repeat: none; }");//连接connect(btn_login,&QPushButton::clicked,this,[=](){QString username = line_username->text();QString password = line_pswd->text();if(username == "admin" && password == "123456"){int ret = QMessageBox::information(this,"登录","登录中 ...",QMessageBox::Ok|QMessageBox::Cancel);if(ret == QMessageBox::Ok){emit mySignal("login success"); // 发射自定义信号,进行页面跳转}else if(ret == QMessageBox::Cancel){line_pswd->clear();}}else if(password == ""){QMessageBox::warning(this,"warning","密码不能为空");}else{QMessageBox::warning(this,"warning","用户名或者密码错误");line_pswd->clear();}});connect(btn_cancel,&QPushButton::clicked,this,&Widget::clicked_cancel);//将自定义的函数与自定义槽函数进行连接connect(this,&Widget::mySignal,[](QString e){qDebug()<<e;});
}
Widget::~Widget()
{delete ui;
}void Widget::clicked_cancel()
{
//点击取消后,关闭整个界面this->close();
}
//form.cpp
#include "form.h"
#include "ui_form.h"Form::Form(QWidget *parent) :QWidget(parent),ui(new Ui::Form)
{ui->setupUi(this);}
void Form::mySlot()
{this->show();
}
Form::~Form()
{delete ui;
}