QT登陆界面,运用正则表达式,时间显示和定时器

<dialog.h>
#ifndef DIALOG_H
#define DIALOG_H
#include<Qlabel>
#include<QLineEdit>
#include<QPushButton>
#include <QDialog>

class Dialog : public QDialog
{
    Q_OBJECT

public:
    Dialog(QWidget *parent = 0);
    ~Dialog();
protected:
    QLabel *label1,*label2,*datalabel;
    QLineEdit *lineEdit1,*lineEdit2;
    QPushButton *button1,*button2,*button3;
public slots:
    void showTime();
    void clear();
private:
    QTimer *m_timer;
    void InitTimer();

};

#endif // DIALOG_H


<dialog.cpp>
#include "dialog.h"
#include <QDebug>
#include<QGridLayout>
#include<QDateTime>
#include<QTimer>
Dialog::Dialog(QWidget *parent)
    : QDialog(parent)
{
    label1=new QLabel(this);
    label1->setText(tr("用户名:"));
    label2=new QLabel(this);
    label2->setText(tr("密码:"));
    datalabel=new QLabel(this);
    lineEdit1=new QLineEdit(this);
    lineEdit1->setPlaceholderText("4位字母用户名");
    lineEdit2=new QLineEdit(this);
    lineEdit2->setPlaceholderText("5位数字密码");
    button1=new QPushButton(this);
    button1->setText(tr("登陆"));
    button2=new QPushButton(this);
    button2->setText(tr("退出"));
    button3=new QPushButton(this);
    button3->setText(tr("重置"));

    QGridLayout*mainLayout=new QGridLayout(this);//用于布局管理,将所有控件的位置固定

    mainLayout->addWidget(label1,0,0);
    mainLayout->addWidget(lineEdit1,0,1);
    mainLayout->addWidget(label2,1,0);
    mainLayout->addWidget(lineEdit2,1,1);
    mainLayout->addWidget(button1,2,0);
    mainLayout->addWidget(button2,2,1);
    mainLayout->addWidget(button3,2,2);
    mainLayout->addWidget(datalabel,3,0);
    connect(button1,SIGNAL(clicked()),this,SLOT(showTime()));
    connect(button2,&QPushButton::clicked,this,&Dialog::close);
    connect(button3,SIGNAL(clicked()),this,SLOT(clear()));
}

Dialog::~Dialog()
{

}
void Dialog::showTime()
{

    if(QRegExp(tr("[a-z][a-z][a-z][a-z]")).exactMatch(lineEdit1->text())&&QRegExp(tr("0|[1-9]\\d{0,4}")).exactMatch(lineEdit2->text()))
    {
        QTimer *time=new QTimer(this);
        connect(time,SIGNAL(timeout()),this,SLOT(showTime()));
        time->start(2000);
        QDateTime *datatime=new QDateTime(QDateTime::currentDateTime());
        QString str=datatime->toString("yyyy-MM-dd hh:mm:ss dddd");

        datalabel->setText(str);
     }
}

void Dialog::clear()
{
    lineEdit1->clear();
    lineEdit2->clear();
    datalabel->clear();
}

正则表达式:QRegExp(tr("*****")).exactMatch(lineEdit->text())
使用QRegExp::exactMatch来判断一个字符串是否符合

显示实时时间:QDateTime *datatime=new QDateTime(QDateTime::currentDateTime());
QString str=datatime->toString(“yyyy-MM-dd hh:mm:ss dddd”);
datalabel->setText(str);

定时器:QTimer *time=new QTimer(this);
connect(time,SIGNAL(timeout()),this,SLOT(showTime()));
time->start(2000);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值