使用qt做简单的登录窗口
环境:
- win10
- Qt5
创建项目:
选择Widget类 勾选ui界面
因为我是用的默认类名所以类名是Widget 以下是Widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
~Widget();
protected:
// 重写鼠标拖动事件
void mouseMoveEvent(QMouseEvent *event);
// 重写鼠标选中事件
void mousePressEvent(QMouseEvent *event);
// 重写鼠标离开事件
void mouseReleaseEvent(QMouseEvent *event);
private:
Ui::Widget *ui;
QPoint mousePoint; // 记录鼠标坐标
bool mouse_press; // 记录是否聚焦
};
#endif // WIDGET_H
Widget.cpp文件
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
// 固定登录大小窗口
this->setFixedSize(400, 300);
// 信号槽监听关闭窗口
connect(ui->Logout,&QPushButton::clicked, this, &Widget::close);
// 设置登录窗口无边框
this->setWindowFlags(Qt::FramelessWindowHint);
// 监听勾选显示密码
connect(ui->DisplayPwd, &QCheckBox::clicked, this, [=](bool flag){
if(flag){
ui->PassWord->setEchoMode(QLineEdit::Normal);
}else{
ui->PassWord->setEchoMode(QLineEdit::Password);
}
});
// 监听点击登录
connect(ui->Login,&QPushButton::clicked, this, [&](bool){
// 展示其他界面
// this->XXXX.show();
// 收起登录界面
// this->hide();
});
}
Widget::~Widget()
{
delete ui;
}
void Widget::mouseMoveEvent(QMouseEvent *event)
{
if(mouse_press)
{
move(event->globalPos() - mousePoint);
}
}
void Widget::mousePressEvent(QMouseEvent *event)
{
// 如果点击鼠标左键
if(event->button() == Qt::LeftButton){
mouse_press = true;
// 鼠标点击的位置 - 窗口坐标
mousePoint = event->globalPos() - this->pos();
}
}
void Widget::mouseReleaseEvent(QMouseEvent *event)
{
mouse_press = false;
}
ui界面
密码使用密文需要勾选ui界面选项
最终效果
还可以点击勾选显示密码查看