1 头文件
#pragma once
#include <QtWidgets/QWidget>
#include "ui_QTday2_.h"
#include <qlabel.h> //标签类
#include <qlineedit> //行编辑器类
#include <qsize>
#include <qicon.h>
#include <qpushbutton.h>
#include <qtexttospeech.h>
QT_BEGIN_NAMESPACE
namespace Ui { class QTday2_Class; };
QT_END_NAMESPACE
class QTday2_ : public QWidget
{
Q_OBJECT
signals:
public slots:
void my_slot(); //声明一个槽函数
void my_cancel();
void my_login_line();
public:
QTday2_(QWidget *parent = nullptr);
~QTday2_();
private:
Ui::QTday2_Class *ui;
QPushButton* b1; //定义按钮的指针
QPushButton* b2; //定义按钮的指针
QLabel* L1; //定义标签指针
QLabel* L2; //定义标签指针
QLabel* L3; //定义标签指针
QLineEdit* E1; //定义行编辑器类
QLineEdit* E2; //定义行编辑器类
};
2 源文件
#include "QTday2_.h"
#include <qdebug.h>
QTday2_::QTday2_(QWidget *parent)
: QWidget(parent)
, ui(new Ui::QTday2_Class())
{
ui->setupUi(this);
//设置窗口背景
/*QPalette pal = this->palette();
pal.setBrush(QPalette::Background, QBrush(QPixmap("D:/code/cpp QT/QTday2_/icon/icon/shanshui.jpeg")));
setPalette(pal);*/
//设置窗口图标
this->setWindowIcon(QIcon("D:/code/cpp QT/QTday2_/icon/icon/logo.png"));
//设置窗口名
this->setWindowTitle("HQYJ");
//设置固定窗口大小
this->setFixedSize(500, 400);
//
//this->setStyleSheet("border-style:insert");
//设置标签类(logo)
L1 = new QLabel(this);
L1->resize(QSize(500, 180));//大小
L1->setScaledContents(true); //设置让图片自适应标签大小
L1->setPixmap(QPixmap("D:/code/cpp QT/QTday2_/icon/icon/shanshui.jpeg"));
//设置标签类(userName)
L2 = new QLabel(this);
L2->move(150, 230);
L2->resize(QSize(20, 20));
L2->setScaledContents(true); //设置让图片自适应标签大小
L2->setPixmap(QPixmap("D:/code/cpp QT/QTday2_/icon/icon/userName.jpg"));
//行编辑器
E1 = new QLineEdit(this);
E1->move(180, 230);
E1->resize(QSize(150, 20));
//E1->setEchoMode(QLineEdit::Password);//密文模式
E1->setPlaceholderText("name");
//设置标签类(password)
L2 = new QLabel(this);
L2->move(150, 260);
L2->resize(QSize(20, 20));
L2->setScaledContents(true); //设置让图片自适应标签大小
L2->setPixmap(QPixmap("D:/code/cpp QT/QTday2_/icon/icon/passwd.jpg"));
//行编辑器
E2 = new QLineEdit(this);
E2->move(180, 260);
E2->resize(QSize(150, 20));
E2->setEchoMode(QLineEdit::Password);//密文模式
E2->setPlaceholderText("password");
//按钮(login)
b1 = new QPushButton(this);
b1->move(200, 320);
b1->setText("login");
b1->setEnabled(false);
b1->setIcon(QIcon("D:/code/cpp QT/QTday2_/icon/icon/login.png"));
//按钮(cancel)
b2 = new QPushButton(this);
b2->move(310, 320);
b2->setText("cancel");
b2->setIcon(QIcon("D:/code/cpp QT/QTday2_/icon/icon/cancel.png"));
//信号与槽连接
connect(this->b1, SIGNAL(clicked()), this, SLOT(my_slot()));
connect(this->b2, SIGNAL(clicked()), this, SLOT(my_cancel()));
//connect(this->E1, SIGNAL(textChanged(QString)), this, SLOT(my_login_line()));
//输入框状态改变(QT5版本)
connect(this->E1, &QLineEdit::textChanged, this, &QTday2_::my_login_line);
}
QTday2_::~QTday2_()
{
delete ui;
}
//登陆按钮
void QTday2_ ::my_slot()
{
//qDebug() << E1->text();
if (E1->text() == QString("admin"))//比较账户名
{
//qDebug() << true;
if (E2->text() == QString("123456"))//比较密码名
{
qDebug() << "success";
this->close();//关闭界面
}
else
{
qDebug() << "Password error";
}
}
else
{
qDebug() << "Account does not exist or is incorrect";
}
}
//取消按钮
void QTday2_::my_cancel()
{
this->close();//关闭界面
}
//行编辑器
void QTday2_::my_login_line()
{
if (! E1->text().isEmpty())//判断账户框是否有输入
{
b1->setEnabled(true); //不可用状态
}
else
{
b1->setEnabled(false);//可用状态
}
}
3 main
#include "QTday2_.h"
#include <QtWidgets/QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QTday2_ w;
w.show();
return a.exec();
}