1、使用手动连接,将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中,在自定义的槽函数中调用关闭函数
将登录按钮使用qt5版本的连接到自定义的槽函数中,在槽函数中判断ui界面上输入的账号是否为"admin",密码是否为"123456",如果账号密码匹配成功,则输出“登录成功”,并关闭该界面,如果匹配失败,则输出登录失败,并将密码框中的内容清空
2、完成一个使用qss的登陆窗口界面
程序代码:
widget.h:
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QMovie>//动态图类
#include <QMainWindow>
#include <QPushButton>//按钮类
#include <QMessageBox> //弹窗类
#include <QString> //字符串类
#include <QIcon>//图标类
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
signals: //该权限下都是信号函数
public slots://该权限下都是槽函数
void my_close();//实现取消按钮,关闭窗口
void LogBtn_slot();//实现登录功能
private:
Ui::Widget *ui;
QMessageBox *box;//实例化一个弹窗box
};
#endif // WIDGET_H
widget.cpp:
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
//去掉头部
this->setWindowFlag(Qt::FramelessWindowHint);
//去掉空白
this->setAttribute(Qt::WA_TranslucentBackground);
this->setWindowTitle("天马系统");//窗口名
this->setWindowIcon(QIcon(":/my_pictrue/kk.jpg"));
ui->AboveName->setPixmap(QPixmap(":/my_pictrue/zz.jpg"));//账号前图标
ui->AboveName->setScaledContents(true);//自适应
ui->AbovePasswd->setPixmap(QPixmap(":/my_pictrue/yy.jpg"));//密码前图标
ui->AbovePasswd->setScaledContents(true);//自适应
QMovie *mv = new QMovie(":/my_pictrue/bb.gif");//Log动态图标
mv->start();//动图
ui->Loglab->setMovie(mv);
ui->Loglab->setScaledContents(true);//自适应
ui->NameEdit->setPlaceholderText("QQ/手机");
ui->PasswdEdit->setPlaceholderText("密码");
ui->PasswdEdit->setEchoMode(QLineEdit::Password);
//一:设置一个取消按钮
//手动连接 基于qt4版本 连接 自定义槽函数(调用关闭函数)
connect(ui->closeBtn,SIGNAL(clicked()),this,SLOT(my_close()));
//二:登录按钮 基于QT5连接 自定义槽函数
//判断输入账号是否为"admin",密码是否为"123456"
//匹配成功,输出"登录成功",关闭界面
//匹配失败,输出登录失败,将密码框内容清空
//连接
connect(ui->LogBtn,&QPushButton::clicked,this,&Widget::LogBtn_slot);
}
Widget::~Widget()
{
delete ui;
}
//按钮Btn1对应槽函数实现
void Widget::my_close()//基于QT4 自定义槽函数实现
{
this->close();//调用关闭函数
}
//基于QT5 自定义槽函数的实现
void Widget::LogBtn_slot()
{
box = new QMessageBox;//申请空间
box->setWindowTitle("提示");//设置提示框名
box->resize(20,20);//设置大小
box->setFixedSize(20,20);//固定大小
box->setWindowIcon(QIcon(":/my_pictrue/kk.jpg"));
if(QString(ui->NameEdit->text())=="admin")
{
if(QString(ui->PasswdEdit->text())=="123456")
{
box->setText("登录成功");//设置提示信息
box->show();
close();
}
else if(QString(ui->PasswdEdit->text())==0)
{
box->setText("请输入密码");
box->show();
}
else
{
box->setText("密码错误");
ui->PasswdEdit->clear();//清空密码框内容
box->show();
}
}
else
{
box->setText("登录失败");
ui->PasswdEdit->clear();//清空密码框内容
box->show();
}
}
运行结果:
qss:
*{
background-color: rgba(255, 255, 255, 100);
}
QFrame#frame1{
border-image: url(:/my_pictrue/aa.png);/*图片*/
background-color: rgba(255, 255, 255, 100);/*背景颜色*/
}
#frame2{
border-radius:30px;/*设置倒角*/
background-color: rgba(91, 91, 91, 100);
}
QPushButton#NameBtn{
background:transparent;
border-radius:10px;
font: 9pt "宋体";/*字体大小、形状*/
color: rgba(255, 255, 255, 120);/*字体颜色*/
}
#PasswdBtn{
background:transparent;
border-radius:10px;
font: 9pt "宋体";
color: rgba(255, 255, 255, 120);
}
#LogBtn{
border-radius:10px;
font: 14pt "宋体";
background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:1, stop:0 rgba(46, 121, 164, 255), stop:1 rgba(255, 255, 255, 255));/*渐变色*/
color: rgba(0, 0, 0, 120);
}
#closeBtn{
background:transparent;/*背景透明*/
border-radius:10px;
font: 14pt "宋体";
color: rgb(170, 0, 0);
}
#LogBtn:pressed{/*点击按钮*/
background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:1, stop:0 rgba(97, 71, 153, 255), stop:1 rgba(255, 255, 255, 255));
padding-top:5px;/*点击时字体偏移*/
padding-left:5px;
}
QLabel#AboveName{
background:transparent;
border-radius:5px;
background-color: rgba(255, 255, 255, 120);
}
#AbovePasswd{
background:transparent;
border-radius:5px;
background-color: rgba(255, 255, 255, 120);
}
#Loglab{
background:transparent;
border-radius:5px;
}
QLineEdit{
background:transparent;
border:none;/*无边框*/
border-bottom:1px solid rgb(100, 100, 100);
}
思维导图: