头文件
#ifndef LOGINUI_H
#define LOGINUI_H
#include
#include
#include
#include
#include
#include "client.h"
class LoginUI : public QWidget
{
Q_OBJECT
private:
QLabel* Background_Lab;
QLabel* Titile_Lab;
QLabel* Username_Lab;
QLabel* Password_Lab;
QPushButton* Close_Btn;
QPushButton* Hide_Btn;
QPushButton* Login_Btn;
QLineEdit* Username_Edit;
QLineEdit* Password_Edit;
LoginUI();
bool construct();
private slots:
void On_CloseBtn_Clicked();
void On_Loginbtn_Slots();
public:
static LoginUI* NewInstance();
void show();
~LoginUI();
signals:
void Jump();
};
#endif
函数实现
#include "LoginUI.h"
#include
LoginUI::LoginUI(): QWidget(nullptr, Qt::WindowCloseButtonHint)
{
}
void LoginUI::show()
{
setWindowFlag(Qt::FramelessWindowHint);
setFixedSize(538, 373);
QWidget::show();
}
LoginUI::~LoginUI()
{
}
bool LoginUI::construct()
{
bool ret = true;
Background_Lab = new QLabel(this);
if( Background_Lab != nullptr)
{
Background_Lab->resize(538, 160);
Background_Lab->setStyleSheet("background-color:rgb(115,70,240)");
}
else
{
ret = false;
}
Titile_Lab = new QLabel(this);
if( Titile_Lab != nullptr )
{
Titile_Lab->resize(90, 50);
Titile_Lab->setPixmap(QPixmap(":/QT_Icon/QQ_Icon.png"));
Titile_Lab->setScaledContents(true);
}
else
{
ret = false;
}
Close_Btn = new QPushButton(this);
if( Close_Btn != nullptr )
{
Close_Btn->resize(20, 20);
Close_Btn->setIcon(QIcon(":/QT_Icon/close02.png"));
Close_Btn->move(508, 10);
connect(this->Close_Btn, &QPushButton::clicked, this, &LoginUI::On_CloseBtn_Clicked);
}
else
{
ret = false;
}
Hide_Btn = new QPushButton(this);
if( Hide_Btn != nullptr )
{
Hide_Btn->resize(20, 20);
Hide_Btn->setIcon(QIcon(":/QT_Icon/hide02.png"));
Hide_Btn->move(468, 10);
connect(this->Hide_Btn, &QPushButton::clicked, this, &LoginUI::hide);
}
else
{
ret = false;
}
Username_Edit = new QLineEdit(this);
if( Username_Edit != nullptr )
{
Username_Edit->resize(260, 40);
Username_Edit->move(159, 173);
Username_Edit->setMaxLength(16);
Username_Edit->setPlaceholderText("QQ账号/手机号/邮箱");
}
else
{
ret = false;
}
Password_Edit = new QLineEdit(this);
if( Password_Edit != nullptr )
{
Password_Edit->resize(260, 40);
Password_Edit->move(Username_Edit->x(), Username_Edit->y()+60);
Password_Edit->setEchoMode(QLineEdit::Password);
Password_Edit->setMaxLength(16);
}
else
{
ret = false;
}
Username_Lab = new QLabel(this);
if( Username_Lab != nullptr )
{
Username_Lab->resize(30, 30);
Username_Lab->move(Username_Edit->x()-40, Username_Edit->y()+5);
Username_Lab->setPixmap(QPixmap(":/QT_Icon/windos_icon1.png"));
Username_Lab->setScaledContents(true);
}
else
{
ret = false;
}
Password_Lab = new QLabel(this);
if( Password_Lab != nullptr )
{
Password_Lab->resize(30, 30);
Password_Lab->move(Password_Edit->x()-40, Password_Edit->y()+5);
Password_Lab->setPixmap(QPixmap(":/QT_Icon/password.png"));
Password_Lab->setScaledContents(true);
}
else
{
ret = false;
}
Login_Btn = new QPushButton("登录",this);
if( Login_Btn != nullptr )
{
Login_Btn->resize(300, 40);
Login_Btn->setStyleSheet("background-color:rgb(8,189,253);");
Login_Btn->move(Password_Lab->x(), Password_Lab->y()+60);
connect(this->Login_Btn, &QPushButton::clicked, this, &LoginUI::On_Loginbtn_Slots);
}
else
{
ret = false;
}
return ret;
}
void LoginUI::On_CloseBtn_Clicked()
{
QMessageBox box(QMessageBox::Question, "关闭", "您确定要退出?", QMessageBox::Yes | QMessageBox::No, this);
box.setDefaultButton(QMessageBox::No);
int ret = box.exec();
if(ret == QMessageBox::Yes)
{
this->close();
}
else if(ret == QMessageBox::No)
{
}
}
void LoginUI::On_Loginbtn_Slots()
{
if(Username_Edit->text() == "admin" && Password_Edit->text() == "123456")
{
emit Jump();
this->close();
}
else
{
int ret = QMessageBox::warning(this, "失败", "账号或密码错误", QMessageBox::Ok, QMessageBox::Ok);
if(ret == QMessageBox::Ok)
{
}
}
}
LoginUI *LoginUI::NewInstance()
{
LoginUI* ret = new LoginUI;
if( ret == nullptr && !ret->construct() )
{
delete ret;
ret = nullptr;
}
qDebug() << ret->construct();
return ret;
}
跳转窗口头文件
#ifndef CLIENT_H
#define CLIENT_H
#include
namespace Ui {
class Client;
}
class Client : public QWidget
{
Q_OBJECT
public:
explicit Client(QWidget *parent = nullptr);
~Client();
public slots:
void jump_solt();
private:
Ui::Client *ui;
};
#endif
跳转窗口函数实现
#include "client.h"
#include "ui_client.h"
Client::Client(QWidget *parent) :
QWidget(parent),
ui(new Ui::Client)
{
ui->setupUi(this);
}
Client::~Client()
{
delete ui;
}
void Client::jump_solt()
{
this->show();
}
main函数
#include "LoginUI.h"
#include "client.h"
#include
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
LoginUI* cal = LoginUI::NewInstance();
int ret = -1;
Client* c1 = new Client;
LoginUI::connect(cal, &LoginUI::Jump, c1, &Client::jump_solt);
if( cal != NULL )
{
cal->show();
ret = a.exec();
delete cal;
}
return ret;
}