莘县的住房建设局 委 网站百度营销后台
上一篇设计了登录和聊天窗口,并实现了窗口切换,本章将继续实现其他模块
本章内容
- 完善登录验证
- 实现自定义窗口的拖动效果
完善登录验证
对登录的输入框进行输入限定,这里我限制登录id为6位纯数字组合,密码长度不超过16位
设置代码我放在了构造函数里
LoginWindow::LoginWindow(QWidget *parent): QWidget(parent)
{ui.setupUi(this);connectSlots();//设置输入框的限制QRegExp rx("[1-9][0-9]{5}"); //不超过6位的纯数字idQRegExpValidator *pReg = new QRegExpValidator(rx, this);ui.lineEditUserID->setValidator(pReg);ui.lineEditPassword->setMaxLength(16); //设置密码最大长度16
}
在登录按钮点击后,校验ID长度是否合法,不合法则进行提示
//登录按钮点击事件
void LoginWindow::slotLoginBtnClicked()
{//获取用户输入QString strID = ui.lineEditUserID->text();if (strID.size() != 6){QToolTip::showText(QCursor::pos(), QString::fromLocal8Bit("ID输入有误!"));return;}//验证账户有效性//关闭登录界面(调用关闭函数)slotCloseBtnClicked();//发送成功的信号emit signalLoginOK();
}
相关头文件
#include <QRegExp>
#include <QToolTip>
实现自定义窗口的拖动效果
新建一个窗口移动的类 MoveWindow,继承QWidget并重写鼠标移动事件
大致代码
class MoveWindow : public QWidget
{Q_OBJECTpublic:explicit MoveWindow(QWidget *parent = Q_NULLPTR);protected:/*** @brief 鼠标按下,准备拖动窗体* @param event*/void mousePressEvent(QMouseEvent *event);/*** @brief 鼠标移动,处理窗体拖动* @param event*/void mouseMoveEvent(QMouseEvent *event);/*** @brief 释放鼠标* @param event*/void mouseReleaseEvent(QMouseEvent *event);/*** @brief 获取可拖动控件,必须由子类指定* @return*/virtual QWidget*getDragnWidget() = 0;/*** @brief 判断鼠标点击的位置是否进入可拖动区域* @param widget 可拖动控件位置* @param point 鼠标点击位置* @return*/bool isPointInDragnWidget(const QWidget*widget, const QPoint &point);/*** @brief 标志是否移动窗体*/bool isMove;/*** @brief 鼠标按下去的点*/QPoint pressedPoint;
};
修改LoginWindow和ChatWindow父类为MoveWindow
.h
class LoginWindow : public MoveWindow
{Q_OBJECTpublic:LoginWindow(QWidget *parent = nullptr);~LoginWindow();.cpp
LoginWindow::LoginWindow(QWidget *parent): MoveWindow(parent)
{ui.setupUi(this);
同时实现基类中的虚函数 getDragnWidget()
protected:QWidget* getDragnWidget();
QWidget * LoginWindow::getDragnWidget()
{return this;
}
关于这里可以 参考我的另一篇博客,自定窗口的拖动
具体的实现根据自己的需要进行调整,不用照搬