2-14. 员工信息录入到数据库

根据设计的员工注册界面编写相应功能

该界面设计为widget类型,可以嵌入到主界面

主函数添加头文件

#include "registerwin.h"

 主函数添加(在创建数据库之前),目前会显示两个界面,用于测试相应功能,后续嵌入到主界面

RegisterWin ww;
ww.show();

设计界面及对应控件名称

遇到困难:注册模块注册人脸失败

解决方法:

1.先检查是否有语法逻辑错误导致无法注册

2. qdebug打印faceid查看faceid,发现faceid都为0,识别不了人脸,说明faceobject出现问题

3.检查faceobject模块导入的seetaface数据库 ,创建对象初始化之后还需要导入已有的人脸数据库

遇到困难:将头像保存到固定路径下命名都为0.jpg

解决方法:

查看转换编码

QString headfile = QString("./data/%1.jpg").arg(ui->nameEdit->text().toUtf8().Base64Encoding)

 将Base64Encoding编码方式换为toBase64(),用QString包起来(为什么?)

QString headfile = QString("./data/%1.jpg").arg(QString(ui->nameEdit->text().toUtf8().toBase64()));
#include "registerwin.h"
#include "ui_registerwin.h"
#include <QFileDialog>
#include <qfaceobject.h>
#include <QSqlTableModel>
#include <QSqlRecord>
#include <QMessageBox>
#include <QDebug>

RegisterWin::RegisterWin(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::RegisterWin)
{
    ui->setupUi(this);
}

RegisterWin::~RegisterWin()
{
    delete ui;
}


//重置
void RegisterWin::on_resetBt_clicked()
{
    //清空数据
    ui->nameEdit->clear();
    ui->birthdayEdit->setDate(QDate::currentDate());//重置日期设置为当前日期
    ui->addressEdit->clear();
    ui->phoneEdit->clear();
    ui->picFileEdit->clear();
}


//添加头像
void RegisterWin::on_addpicBt_clicked()
{
    //通过文件对话框选择图片路径
    QString filepath = QFileDialog::getOpenFileName(this);
    ui->picFileEdit->setText(filepath);

    //显示图片
    QPixmap mmp(filepath);
    mmp = mmp.scaledToWidth(ui->headpicLb->width());//根据宽度缩放,高度自适应
    ui->headpicLb->setPixmap(mmp);
}


//注册
void RegisterWin::on_registerBt_clicked()
{
    //1.通过照片,结合faceObject模块得到faceID
    QFaceObject faceobj;
    cv::Mat image = cv::imread(ui->picFileEdit->text().toUtf8().data());//从输入框路径拿到图片转为字节再转到char类型读取
    int faceID = faceobj.face_register(image);
    qDebug()<<faceID;
    
    //把头像保存到一个固定路径下
    QString headfile = QString("./data/%1.jpg").arg(QString(ui->nameEdit->text().toUtf8().toBase64()));//64位编码之后作为名称保存
    //保存注册图像
    cv::imwrite(headfile.toUtf8().data(), image);
    
    //2.把个人信息存储到数据库employee
    QSqlTableModel model;
    model.setTable("employee");//绑定数据表,设置表名
    QSqlRecord record = model.record();
    //设置记录数据
    record.setValue("name", ui->nameEdit->text());
    record.setValue("sex",ui->mrb->isChecked()?"男":"女");
    record.setValue("birthday", ui->birthdayEdit->text());
    record.setValue("address",ui->addressEdit->text());
    record.setValue("phone",ui->phoneEdit->text());
    record.setValue("faceID", faceID);
    //头像路径
    record.setValue("headfile",headfile);
    //把记录插入到数据库表格中
    bool ret = model.insertRecord(0,record);
    
    //3.提示注册成功
    if(ret)
    {
        QMessageBox::information(this,"注册提示","注册成功");
        //提交存到数据库
        model.submitAll();
    }else
    {
        QMessageBox::information(this,"注册提示","注册失败");
    }
    
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值