首页 > 代码库 > qtday02 qt做简单的加法器和模拟登陆功能

qtday02 qt做简单的加法器和模拟登陆功能

//在3t2目录下
//adder.h
/*
qt简单加法计算器
*/
#ifndef ADDER_H
#define ADDER_H
#include<QDialog>
#include<QLineEdit>
#include<QtWidgets/QPushButton>
#include<QtWidgets/QLabel>
class Adder:public QDialog{
    Q_OBJECT//让自定义的槽函数生效
    private:
        QLineEdit * add1;
        QLabel * oper;
        QLineEdit *add2;
        QPushButton * equ;
        QLineEdit * res;
        QPushButton * bclose;
    public:
        Adder();
        ~Adder();
        /*自定义槽函数*/
    public slots:
        void getres();
    
};

#endif

//adder.cpp
#include "adder.h"
/*#include<QDialog>
#include<QLineEdit>
#include<QtWidgets/QPushButton>
#include<QtWidgets/QLabel>
*/
Adder::Adder(){
    this->resize(400,300);
    add1=new QLineEdit(this);
    add1->resize(80,20);
    add1->move(0,20);
    oper=new QLabel("+",this);
    oper->resize(20,20);
    oper->move(80,20);
    add2=new QLineEdit(this);
    add2->resize(80,20);
    add2->move(100,20);
    equ=new QPushButton("=",this);
    equ->resize(20,20);
    equ->move(180,20);
    res=new QLineEdit(this);
    res->resize(80,20);
    res->move(200,20);
    bclose=new QPushButton("close",this);
    bclose->resize(80,20);
    bclose->move(160,160);
    connect(bclose,SIGNAL(clicked()),this,SLOT(close()));
    connect(equ,SIGNAL(clicked()),this,SLOT(getres()));
}
Adder::~Adder(){
    delete add1;
    delete oper;
    delete add2;
    delete equ;
    delete res;
    delete bclose;
}
void Adder::getres(){
    int c=add1->text().toInt()+add2->text().toInt();
    /*
    QString qa=add1->text();
    QString qb=add2->text();
    int a=qa.toInt();
    int b=qb.toInt();
    int c=a+b;
     */
    res->setText(QString::number(c));
}
//qq.h
/*模拟qq登陆*/
#ifndef QQ_H
#define QQ_H
#include<QDialog>
#include<QLineEdit>
#include<QtWidgets/QPushButton>
#include<QtWidgets/QLabel>
class QQ:public QDialog
{
    Q_OBJECT
    private:
        QLineEdit * username;
        QLineEdit* userpwd;
        QPushButton * login;
        QPushButton* cancel;
    public:
        QQ();
        ~QQ();
        /*函数,登陆和退出*/
        public slots:
            void loginAndcancel();
};
#endif
//qq.cpp
#include "qq.h"
QQ::QQ()
{
    this->resize(400,300);
    username=new QLineEdit(this);
    username->resize(80,20);
    username->move(60,20);

    userpwd=new QLineEdit(this);
    userpwd->resize(80,20);
    userpwd->move(60,50);
    userpwd->setEchoMode(QLineEdit::Password);

    login=new QPushButton("login",this);
    login->resize(60,20);
    login->move(20,80);

    cancel=new QPushButton("cancel",this);
    cancel->resize(60,20);
    cancel->move(100,80);
    connect(login,SIGNAL(clicked()),this,SLOT(loginAndcancel()));
    connect(cancel,SIGNAL(clicked()),this,SLOT(loginAndcancel()));
}
QQ::~QQ()
{
    delete username;
    delete userpwd;
    delete login;
    delete cancel;
}
#include<QMessageBox>
void QQ::loginAndcancel()
{
    /**/
    QPushButton *b=(QPushButton*)sender();
    if(b->text()=="login"){
        if(username->text()=="admin"&& userpwd->text()=="123"){
        qDebug("login success!");
        }
        else{
        qDebug("login failed");
        }
    }
    else if(b->text()=="cancel"){
        QMessageBox msg;//退出时提示
        msg.setText("要退出吗?");
        msg.setStandardButtons(QMessageBox::Yes|QMessageBox::No);
        if(msg.exec()==QMessageBox::Yes){
        this->close();
        }
    
    }

}

//gettime.h
/*界面显示获取的当前时间 */
#ifndef GETTIME_H
#define GETTIME_H
#include<QDialog>
#include<QLineEdit>
#include<QtWidgets/QPushButton>
#include<QtWidgets/QLabel>
class GetTime:public QDialog{
    Q_OBJECT
    private:
        QLabel *res;
        QPushButton *gettime;
    public:
        GetTime();
        ~GetTime();
    public slots:
        void settime();
    //方案2,信号连接
    public:signals:
           void ssettime(QString par);
    
};
#endif
//gettime.cpp
#include "gettime.h"
GetTime::GetTime()
{
    this->resize(400,300);
    res=new QLabel("Cur Time",this);
    gettime=new QPushButton("gettime",this);
    gettime->move(0,50);
    connect(gettime,SIGNAL(clicked()),this,SLOT(settime()));
    connect(this,SIGNAL(ssettime(QString)),res,SLOT(setText(QString)));
    //connect(this);
}
GetTime::~GetTime()
{
    delete res;
    delete gettime;
}
#include<QTime>
/*
#include<time.h>
#include<stdio.h>
*/
void GetTime::settime(){
    /*
    struct tm *tm1=localtime(time(0));
    char buf[200];
    sprintf(buf,"%4d-%2d-%2d %2d:%2d:%2d",tm1->tm_year+1700,
            tm1->tm_mon+1,tm1->tm_mday,
            tm1->tm_hour,tm1->tm_min,tm1->tm_sec);
    res->setText(buf);
    */
    /*
    //1 直接调用res槽函数,设置值
    res->setText(QTime::currentTime().toString("HH:mm:ss"));
    */
    /*方案2,发送带参数的信号,再由信号参数去触发res的槽函数 emit */
    emit ssettime(QTime::currentTime().toString("HH:mm:ss"));
}


//main.cpp
/*测试上面三个功能 */
/*
 qt做简单的加法计算器
 */
#include<QApplication>
#include "adder.h"
#include "qq.h"
#include "gettime.h"
int main(int argc,char * argv[])
{
    QApplication app(argc,argv);
    /*简单加法器
    Adder add1;
    add1.show();
    */
    /*qq登陆框
    QQ qq;
    qq.show();
    */
    /**/
    GetTime t;
    t.show();
    //qDebug("output");//在控制台上输出信息
    app.exec();
}