9.22 QT作业

widget.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
 
#include 
#include 
#include 
#include "second.h"  //第二个界面头文件
#include "third.h"  //注册界面头文件
 
#include           //数据库管理类
#include               //执行sql语句的类
#include               //数据库记录的类
#include 
 
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
 
class MainWindow : public QMainWindow
{
    Q_OBJECT
 
public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
 
signals:
    void jump();           //自定义跳转信号函数
 
    void jump2();           //自定义跳转信号函数
 
public:
    void jump_slot3();  //自定义跳转函数(注册页面)
 
private slots:
 
    void on_pushButton_clicked();
 
    void on_pushButton_2_clicked();
 
    void on_pushButton_3_clicked();
 
private:
    Ui::MainWindow *ui;
 
    Second *s1;  //定义另一个界面的指针
 
    third *t1;  //定义注册页面的指针
 
    QSqlDatabase db;  //定义一个数据库的类
};
#endif // MAINWINDOW_H

widget.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
 
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
 
    ui->label->setPixmap(QPixmap("D:\\QTtupian\\jimoaqing.gif"));
    ui->label->setScaledContents(true);
 
    //账号图标
    ui->label_2->setPixmap(QPixmap("D:\\QTtupian\\zhanghao.jpg"));
    ui->label_2->setScaledContents(true);
    //密码图标
    ui->label_3->setPixmap(QPixmap("D:\\QTtupian\\mima.jpg"));
    ui->label_3->setScaledContents(true);
 
    s1 = new Second;  //给另一个界面实例化空间
    t1 = new third;   //给注册页面实例化空间
 
    //将当前界面的信号,与s1界面的槽函数进行连接
    connect(this,&MainWindow::jump, s1, &Second::jump_slot); //连接聊天室
    connect(this,&MainWindow::jump2, t1, &third::jump_slot2);  //连接注册
    connect(t1,&third::jump3, this, &MainWindow::jump_slot3);  //从注册跳回
    /********************************************************/
 
    //判断自己的数据库对象中,是否包含了要处理的数据库
    if(!db.contains("zhanghu.db"))
    {
        db = QSqlDatabase::addDatabase("QSQLITE");  //参数为驱动类型
 
        //设置数据库的名字
        db.setDatabaseName("zhanghu.db");
    }
    //此时已经有一个名为zhanghu.db的数据库
 
    //打开数据库
    if(!db.open())
    {
        QMessageBox::information(this,"失败","数据库打开失败");
        return ;
    }
    //zhanghu_info
}
 
MainWindow::~MainWindow()
{
    delete ui;
}
 
//注册按钮对应槽函数
void MainWindow::on_pushButton_3_clicked()
{
    emit jump2();  //发送跳转函数
 
    this->hide();  //将当前页面隐藏
}
 
//自定义跳转函数
void MainWindow::jump_slot3()
{
    this->show();
}
 
//登录按钮对应槽函数
void MainWindow::on_pushButton_clicked()
{
    //准备sql语句
    QString sql = "select * from zhanghu_info";
 
    //准备语句执行者
    QSqlQuery querry;
 
    //执行sql语句
    if(!querry.exec(sql))
    {
        QMessageBox::information(this,"提示","显示失败");
        return ;
    }
 
    int i=0;  //记录行数
    QString Z;  //记录账号
    QString M;  //记录密码
    while(querry.next())
    {
        //遍历每条记录中的每一项内容
        for(int j=0;jlineEdit->text()==querry.record().value(j).toString()&&
                    ui->lineEdit_2->text()==querry.record().value(j+1).toString())
            {
                Z = querry.record().value(j).toString();
                M = querry.record().value(j+1).toString();
            }
        }
 
        i++;
    }
 
    //判断输入的账号密码是否与数据库表中已注册的账号密码一致
    if(ui->lineEdit->text()==Z&&ui->lineEdit_2->text()==M)
    {
        //信息对话框
        QMessageBox box(QMessageBox::Question,"成功","登录成功",
                        QMessageBox::Ok,this);
        box.setDefaultButton(QMessageBox::Ok);  //默认到ok上
 
        int ret = box.exec();  //运行对话框
        if(ret == QMessageBox::Ok)
        {
            emit jump();  //发送跳转信息
 
            this->hide(); //将当前界面隐藏
        }
    }
    else
    {
        //错误对话框
        QMessageBox box(QMessageBox::Question,"错误","账号密码不匹配,是否重新登录",
                        QMessageBox::Ok|QMessageBox::Cancel,this);
        box.setDefaultButton(QMessageBox::Ok);  //默认到ok上
        int ret = box.exec();  //运行对话框
        switch(ret)
        {
        case QMessageBox::Ok:
            ui->lineEdit->clear();  //清楚账号密码内容
            ui->lineEdit_2->clear();
            break;
        case QMessageBox::Cancel:
            //ret=box.close();
            break;
        }
    }
 
}
 
//退出按钮对应槽函数
void MainWindow::on_pushButton_2_clicked()
{
    //问题对话框
    int ret = QMessageBox::question(this,"问题","是否确定要退出登录",
                                    QMessageBox::Yes|QMessageBox::No,
                                    QMessageBox::No);
 
    switch(ret)
    {
        case QMessageBox::Yes:
            this->close();  //关闭窗口
            break;
        case QMessageBox::No:
            break;
    }
}

main.cpp

#include "mainwindow.h"
 
#include 
 
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    return a.exec();
}

你可能感兴趣的:(qt,开发语言)