diff --git a/CasicBioRecNew.pro b/CasicBioRecNew.pro index d4db4e2..a6059d8 100644 --- a/CasicBioRecNew.pro +++ b/CasicBioRecNew.pro @@ -52,12 +52,12 @@ FORMS += RecognizeResultForm.ui DISTFILES += conf/config.ini -DISTFILES += conf/log.conf DISTFILES += qss/startup.css DISTFILES += qss/personList.css DISTFILES += qss/addPerson.css DISTFILES += qss/dialogTips.css DISTFILES += qss/recognize.css +DISTFILES += qss/setting.css RESOURCES += resource.qrc diff --git a/CasicBioRecNew.pro b/CasicBioRecNew.pro index d4db4e2..a6059d8 100644 --- a/CasicBioRecNew.pro +++ b/CasicBioRecNew.pro @@ -52,12 +52,12 @@ FORMS += RecognizeResultForm.ui DISTFILES += conf/config.ini -DISTFILES += conf/log.conf DISTFILES += qss/startup.css DISTFILES += qss/personList.css DISTFILES += qss/addPerson.css DISTFILES += qss/dialogTips.css DISTFILES += qss/recognize.css +DISTFILES += qss/setting.css RESOURCES += resource.qrc diff --git a/CasicBioRecWin.cpp b/CasicBioRecWin.cpp index bf6ffe3..c391575 100644 --- a/CasicBioRecWin.cpp +++ b/CasicBioRecWin.cpp @@ -1,4 +1,4 @@ -#include "CasicBioRecWin.h" +#include "CasicBioRecWin.h" #include "ui_CasicBioRecWin.h" CasicBioRecWin::CasicBioRecWin(QWidget *parent) @@ -17,8 +17,7 @@ // 设置窗口透明和大小、位置 this->setWindowFlags(Qt::FramelessWindowHint); this->move(0, 0); - this->resize(SettingConfig::getInstance().WINDOW_WIDTH, - SettingConfig::getInstance().WINDOW_HEIGHT); + this->resize(SettingConfig::getInstance().WINDOW_WIDTH, SettingConfig::getInstance().WINDOW_HEIGHT); // 通过调色板的颜色来设置窗口的统一背景色 qApp->setPalette(QPalette(QColor(SettingConfig::getInstance().WINDOW_BACKGROUND_COLOR))); @@ -100,8 +99,6 @@ { switch (event->key()) { case Qt::Key_Escape: - //LOG(INFO) << "" << std::endl; - LOG_INFO(" \n\r"); QTimer::singleShot(100, qApp, SLOT(quit())); default: @@ -123,6 +120,7 @@ } void CasicBioRecWin::switchToSettingForm() { + ui->stacked->setCurrentWidget(settingForm); ProMemory::getInstance().widgeFrame = CasicBioRecConst::WidgeFrameName::SETTING_FORM; } void CasicBioRecWin::switchToRegistForm(QString personId) @@ -175,6 +173,7 @@ this, &CasicBioRecWin::switchToSettingForm); connect(startForm, &StartupForm::startRecognize, this, &CasicBioRecWin::switchToRecognizeForm); + connect(startForm, &StartupForm::recognizeTimeout, recogResultForm, &RecognizeResultForm::showRecogFailure); connect(personListForm, &PersonListForm::switchToRegistForm, this, &CasicBioRecWin::switchToRegistForm); @@ -188,6 +187,9 @@ connect(recogResultForm, &RecognizeResultForm::backToHomeAndWait, this, &CasicBioRecWin::backToStandByForm); + + connect(settingForm, &SettingForm::backToHomePage, + this, &CasicBioRecWin::backToStandByForm); } void CasicBioRecWin::initCacheData() diff --git a/CasicBioRecNew.pro b/CasicBioRecNew.pro index d4db4e2..a6059d8 100644 --- a/CasicBioRecNew.pro +++ b/CasicBioRecNew.pro @@ -52,12 +52,12 @@ FORMS += RecognizeResultForm.ui DISTFILES += conf/config.ini -DISTFILES += conf/log.conf DISTFILES += qss/startup.css DISTFILES += qss/personList.css DISTFILES += qss/addPerson.css DISTFILES += qss/dialogTips.css DISTFILES += qss/recognize.css +DISTFILES += qss/setting.css RESOURCES += resource.qrc diff --git a/CasicBioRecWin.cpp b/CasicBioRecWin.cpp index bf6ffe3..c391575 100644 --- a/CasicBioRecWin.cpp +++ b/CasicBioRecWin.cpp @@ -1,4 +1,4 @@ -#include "CasicBioRecWin.h" +#include "CasicBioRecWin.h" #include "ui_CasicBioRecWin.h" CasicBioRecWin::CasicBioRecWin(QWidget *parent) @@ -17,8 +17,7 @@ // 设置窗口透明和大小、位置 this->setWindowFlags(Qt::FramelessWindowHint); this->move(0, 0); - this->resize(SettingConfig::getInstance().WINDOW_WIDTH, - SettingConfig::getInstance().WINDOW_HEIGHT); + this->resize(SettingConfig::getInstance().WINDOW_WIDTH, SettingConfig::getInstance().WINDOW_HEIGHT); // 通过调色板的颜色来设置窗口的统一背景色 qApp->setPalette(QPalette(QColor(SettingConfig::getInstance().WINDOW_BACKGROUND_COLOR))); @@ -100,8 +99,6 @@ { switch (event->key()) { case Qt::Key_Escape: - //LOG(INFO) << "" << std::endl; - LOG_INFO(" \n\r"); QTimer::singleShot(100, qApp, SLOT(quit())); default: @@ -123,6 +120,7 @@ } void CasicBioRecWin::switchToSettingForm() { + ui->stacked->setCurrentWidget(settingForm); ProMemory::getInstance().widgeFrame = CasicBioRecConst::WidgeFrameName::SETTING_FORM; } void CasicBioRecWin::switchToRegistForm(QString personId) @@ -175,6 +173,7 @@ this, &CasicBioRecWin::switchToSettingForm); connect(startForm, &StartupForm::startRecognize, this, &CasicBioRecWin::switchToRecognizeForm); + connect(startForm, &StartupForm::recognizeTimeout, recogResultForm, &RecognizeResultForm::showRecogFailure); connect(personListForm, &PersonListForm::switchToRegistForm, this, &CasicBioRecWin::switchToRegistForm); @@ -188,6 +187,9 @@ connect(recogResultForm, &RecognizeResultForm::backToHomeAndWait, this, &CasicBioRecWin::backToStandByForm); + + connect(settingForm, &SettingForm::backToHomePage, + this, &CasicBioRecWin::backToStandByForm); } void CasicBioRecWin::initCacheData() diff --git a/SettingForm.cpp b/SettingForm.cpp index 149e4d8..4772df3 100644 --- a/SettingForm.cpp +++ b/SettingForm.cpp @@ -1,14 +1,62 @@ -#include "SettingForm.h" +#include "SettingForm.h" #include "ui_SettingForm.h" +#pragma execution_character_set("utf-8") + SettingForm::SettingForm(QWidget *parent) : QWidget(parent), ui(new Ui::SettingForm) { ui->setupUi(this); + + // 加载css文件设置控件样式 + QFile file(QApplication::applicationDirPath() + "/qss/setting.css"); + if (file.open(QFile::ReadOnly)) + { + QString qssStr = QLatin1String(file.readAll()); + this->setStyleSheet(qssStr); + file.close(); + } + + ui->scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn); + ui->scrollContents->setMinimumWidth(SettingConfig::getInstance().WINDOW_WIDTH); + ui->basicBox->setMinimumWidth(SettingConfig::getInstance().WINDOW_WIDTH - 140); + ui->btnSetDialog->button(QDialogButtonBox::Ok)->setText("确定"); + + this->initDefaultSetting(); } SettingForm::~SettingForm() { delete ui; } + +void SettingForm::initDefaultSetting() +{ + ui->iptLogPath->setText(SettingConfig::getInstance().LOG_FILE); + ui->iptLogPath->setReadOnly(true); + + ui->selectRecogMod->addItem(QString("人脸识别"), 1); + ui->selectRecogMod->addItem(QString("虹膜识别"), 2); + ui->selectRecogMod->addItem(QString("双认证"), 3); + ui->selectRecogMod->addItem(QString("任意认证"), 4); + ui->selectRecogMod->setCurrentIndex(SettingConfig::getInstance().RECOG_TYPE - 1); +} + +void SettingForm::on_btnBack_clicked() +{ + emit backToHomePage(); +} + +void SettingForm::on_btnHome_clicked() +{ + emit backToHomePage(); +} + +void SettingForm::on_btnSetDialog_accepted() +{ + SettingConfig::getInstance().RECOG_TYPE = ui->selectRecogMod->currentIndex() + 1; + SettingConfig::getInstance().setProperty("recognize", "recogType", QString::number(ui->selectRecogMod->currentIndex() + 1)); + + emit backToHomePage(); +} diff --git a/CasicBioRecNew.pro b/CasicBioRecNew.pro index d4db4e2..a6059d8 100644 --- a/CasicBioRecNew.pro +++ b/CasicBioRecNew.pro @@ -52,12 +52,12 @@ FORMS += RecognizeResultForm.ui DISTFILES += conf/config.ini -DISTFILES += conf/log.conf DISTFILES += qss/startup.css DISTFILES += qss/personList.css DISTFILES += qss/addPerson.css DISTFILES += qss/dialogTips.css DISTFILES += qss/recognize.css +DISTFILES += qss/setting.css RESOURCES += resource.qrc diff --git a/CasicBioRecWin.cpp b/CasicBioRecWin.cpp index bf6ffe3..c391575 100644 --- a/CasicBioRecWin.cpp +++ b/CasicBioRecWin.cpp @@ -1,4 +1,4 @@ -#include "CasicBioRecWin.h" +#include "CasicBioRecWin.h" #include "ui_CasicBioRecWin.h" CasicBioRecWin::CasicBioRecWin(QWidget *parent) @@ -17,8 +17,7 @@ // 设置窗口透明和大小、位置 this->setWindowFlags(Qt::FramelessWindowHint); this->move(0, 0); - this->resize(SettingConfig::getInstance().WINDOW_WIDTH, - SettingConfig::getInstance().WINDOW_HEIGHT); + this->resize(SettingConfig::getInstance().WINDOW_WIDTH, SettingConfig::getInstance().WINDOW_HEIGHT); // 通过调色板的颜色来设置窗口的统一背景色 qApp->setPalette(QPalette(QColor(SettingConfig::getInstance().WINDOW_BACKGROUND_COLOR))); @@ -100,8 +99,6 @@ { switch (event->key()) { case Qt::Key_Escape: - //LOG(INFO) << "" << std::endl; - LOG_INFO(" \n\r"); QTimer::singleShot(100, qApp, SLOT(quit())); default: @@ -123,6 +120,7 @@ } void CasicBioRecWin::switchToSettingForm() { + ui->stacked->setCurrentWidget(settingForm); ProMemory::getInstance().widgeFrame = CasicBioRecConst::WidgeFrameName::SETTING_FORM; } void CasicBioRecWin::switchToRegistForm(QString personId) @@ -175,6 +173,7 @@ this, &CasicBioRecWin::switchToSettingForm); connect(startForm, &StartupForm::startRecognize, this, &CasicBioRecWin::switchToRecognizeForm); + connect(startForm, &StartupForm::recognizeTimeout, recogResultForm, &RecognizeResultForm::showRecogFailure); connect(personListForm, &PersonListForm::switchToRegistForm, this, &CasicBioRecWin::switchToRegistForm); @@ -188,6 +187,9 @@ connect(recogResultForm, &RecognizeResultForm::backToHomeAndWait, this, &CasicBioRecWin::backToStandByForm); + + connect(settingForm, &SettingForm::backToHomePage, + this, &CasicBioRecWin::backToStandByForm); } void CasicBioRecWin::initCacheData() diff --git a/SettingForm.cpp b/SettingForm.cpp index 149e4d8..4772df3 100644 --- a/SettingForm.cpp +++ b/SettingForm.cpp @@ -1,14 +1,62 @@ -#include "SettingForm.h" +#include "SettingForm.h" #include "ui_SettingForm.h" +#pragma execution_character_set("utf-8") + SettingForm::SettingForm(QWidget *parent) : QWidget(parent), ui(new Ui::SettingForm) { ui->setupUi(this); + + // 加载css文件设置控件样式 + QFile file(QApplication::applicationDirPath() + "/qss/setting.css"); + if (file.open(QFile::ReadOnly)) + { + QString qssStr = QLatin1String(file.readAll()); + this->setStyleSheet(qssStr); + file.close(); + } + + ui->scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn); + ui->scrollContents->setMinimumWidth(SettingConfig::getInstance().WINDOW_WIDTH); + ui->basicBox->setMinimumWidth(SettingConfig::getInstance().WINDOW_WIDTH - 140); + ui->btnSetDialog->button(QDialogButtonBox::Ok)->setText("确定"); + + this->initDefaultSetting(); } SettingForm::~SettingForm() { delete ui; } + +void SettingForm::initDefaultSetting() +{ + ui->iptLogPath->setText(SettingConfig::getInstance().LOG_FILE); + ui->iptLogPath->setReadOnly(true); + + ui->selectRecogMod->addItem(QString("人脸识别"), 1); + ui->selectRecogMod->addItem(QString("虹膜识别"), 2); + ui->selectRecogMod->addItem(QString("双认证"), 3); + ui->selectRecogMod->addItem(QString("任意认证"), 4); + ui->selectRecogMod->setCurrentIndex(SettingConfig::getInstance().RECOG_TYPE - 1); +} + +void SettingForm::on_btnBack_clicked() +{ + emit backToHomePage(); +} + +void SettingForm::on_btnHome_clicked() +{ + emit backToHomePage(); +} + +void SettingForm::on_btnSetDialog_accepted() +{ + SettingConfig::getInstance().RECOG_TYPE = ui->selectRecogMod->currentIndex() + 1; + SettingConfig::getInstance().setProperty("recognize", "recogType", QString::number(ui->selectRecogMod->currentIndex() + 1)); + + emit backToHomePage(); +} diff --git a/SettingForm.h b/SettingForm.h index 9a8eafa..e05391d 100644 --- a/SettingForm.h +++ b/SettingForm.h @@ -1,7 +1,11 @@ -#ifndef SETTINGFORM_H +#ifndef SETTINGFORM_H #define SETTINGFORM_H #include +#include +#include +#include +#include "utils/UtilInclude.h" namespace Ui { class SettingForm; @@ -15,8 +19,20 @@ explicit SettingForm(QWidget *parent = nullptr); ~SettingForm(); +private slots: + void on_btnBack_clicked(); + + void on_btnHome_clicked(); + + void on_btnSetDialog_accepted(); + private: Ui::SettingForm *ui; + + void initDefaultSetting(); + +signals: + void backToHomePage(); }; #endif // SETTINGFORM_H diff --git a/CasicBioRecNew.pro b/CasicBioRecNew.pro index d4db4e2..a6059d8 100644 --- a/CasicBioRecNew.pro +++ b/CasicBioRecNew.pro @@ -52,12 +52,12 @@ FORMS += RecognizeResultForm.ui DISTFILES += conf/config.ini -DISTFILES += conf/log.conf DISTFILES += qss/startup.css DISTFILES += qss/personList.css DISTFILES += qss/addPerson.css DISTFILES += qss/dialogTips.css DISTFILES += qss/recognize.css +DISTFILES += qss/setting.css RESOURCES += resource.qrc diff --git a/CasicBioRecWin.cpp b/CasicBioRecWin.cpp index bf6ffe3..c391575 100644 --- a/CasicBioRecWin.cpp +++ b/CasicBioRecWin.cpp @@ -1,4 +1,4 @@ -#include "CasicBioRecWin.h" +#include "CasicBioRecWin.h" #include "ui_CasicBioRecWin.h" CasicBioRecWin::CasicBioRecWin(QWidget *parent) @@ -17,8 +17,7 @@ // 设置窗口透明和大小、位置 this->setWindowFlags(Qt::FramelessWindowHint); this->move(0, 0); - this->resize(SettingConfig::getInstance().WINDOW_WIDTH, - SettingConfig::getInstance().WINDOW_HEIGHT); + this->resize(SettingConfig::getInstance().WINDOW_WIDTH, SettingConfig::getInstance().WINDOW_HEIGHT); // 通过调色板的颜色来设置窗口的统一背景色 qApp->setPalette(QPalette(QColor(SettingConfig::getInstance().WINDOW_BACKGROUND_COLOR))); @@ -100,8 +99,6 @@ { switch (event->key()) { case Qt::Key_Escape: - //LOG(INFO) << "" << std::endl; - LOG_INFO(" \n\r"); QTimer::singleShot(100, qApp, SLOT(quit())); default: @@ -123,6 +120,7 @@ } void CasicBioRecWin::switchToSettingForm() { + ui->stacked->setCurrentWidget(settingForm); ProMemory::getInstance().widgeFrame = CasicBioRecConst::WidgeFrameName::SETTING_FORM; } void CasicBioRecWin::switchToRegistForm(QString personId) @@ -175,6 +173,7 @@ this, &CasicBioRecWin::switchToSettingForm); connect(startForm, &StartupForm::startRecognize, this, &CasicBioRecWin::switchToRecognizeForm); + connect(startForm, &StartupForm::recognizeTimeout, recogResultForm, &RecognizeResultForm::showRecogFailure); connect(personListForm, &PersonListForm::switchToRegistForm, this, &CasicBioRecWin::switchToRegistForm); @@ -188,6 +187,9 @@ connect(recogResultForm, &RecognizeResultForm::backToHomeAndWait, this, &CasicBioRecWin::backToStandByForm); + + connect(settingForm, &SettingForm::backToHomePage, + this, &CasicBioRecWin::backToStandByForm); } void CasicBioRecWin::initCacheData() diff --git a/SettingForm.cpp b/SettingForm.cpp index 149e4d8..4772df3 100644 --- a/SettingForm.cpp +++ b/SettingForm.cpp @@ -1,14 +1,62 @@ -#include "SettingForm.h" +#include "SettingForm.h" #include "ui_SettingForm.h" +#pragma execution_character_set("utf-8") + SettingForm::SettingForm(QWidget *parent) : QWidget(parent), ui(new Ui::SettingForm) { ui->setupUi(this); + + // 加载css文件设置控件样式 + QFile file(QApplication::applicationDirPath() + "/qss/setting.css"); + if (file.open(QFile::ReadOnly)) + { + QString qssStr = QLatin1String(file.readAll()); + this->setStyleSheet(qssStr); + file.close(); + } + + ui->scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn); + ui->scrollContents->setMinimumWidth(SettingConfig::getInstance().WINDOW_WIDTH); + ui->basicBox->setMinimumWidth(SettingConfig::getInstance().WINDOW_WIDTH - 140); + ui->btnSetDialog->button(QDialogButtonBox::Ok)->setText("确定"); + + this->initDefaultSetting(); } SettingForm::~SettingForm() { delete ui; } + +void SettingForm::initDefaultSetting() +{ + ui->iptLogPath->setText(SettingConfig::getInstance().LOG_FILE); + ui->iptLogPath->setReadOnly(true); + + ui->selectRecogMod->addItem(QString("人脸识别"), 1); + ui->selectRecogMod->addItem(QString("虹膜识别"), 2); + ui->selectRecogMod->addItem(QString("双认证"), 3); + ui->selectRecogMod->addItem(QString("任意认证"), 4); + ui->selectRecogMod->setCurrentIndex(SettingConfig::getInstance().RECOG_TYPE - 1); +} + +void SettingForm::on_btnBack_clicked() +{ + emit backToHomePage(); +} + +void SettingForm::on_btnHome_clicked() +{ + emit backToHomePage(); +} + +void SettingForm::on_btnSetDialog_accepted() +{ + SettingConfig::getInstance().RECOG_TYPE = ui->selectRecogMod->currentIndex() + 1; + SettingConfig::getInstance().setProperty("recognize", "recogType", QString::number(ui->selectRecogMod->currentIndex() + 1)); + + emit backToHomePage(); +} diff --git a/SettingForm.h b/SettingForm.h index 9a8eafa..e05391d 100644 --- a/SettingForm.h +++ b/SettingForm.h @@ -1,7 +1,11 @@ -#ifndef SETTINGFORM_H +#ifndef SETTINGFORM_H #define SETTINGFORM_H #include +#include +#include +#include +#include "utils/UtilInclude.h" namespace Ui { class SettingForm; @@ -15,8 +19,20 @@ explicit SettingForm(QWidget *parent = nullptr); ~SettingForm(); +private slots: + void on_btnBack_clicked(); + + void on_btnHome_clicked(); + + void on_btnSetDialog_accepted(); + private: Ui::SettingForm *ui; + + void initDefaultSetting(); + +signals: + void backToHomePage(); }; #endif // SETTINGFORM_H diff --git a/SettingForm.ui b/SettingForm.ui index 7816547..bc8c12e 100644 --- a/SettingForm.ui +++ b/SettingForm.ui @@ -1,21 +1,243 @@ + - - - SettingForm 0 0 - 400 - 300 + 960 + 600 Form + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + 0 + + + + + 0 + + + 15 + + + 15 + + + 15 + + + 15 + + + + + ... + + + + :/images/back.png:/images/back.png + + + + 52 + 52 + + + + + + + + 系统设置 + + + Qt::AlignCenter + + + + + + + ... + + + + :/images/home.png:/images/home.png + + + + 52 + 52 + + + + + + + + + + + + 12 + + + + QFrame::StyledPanel + + + Qt::ScrollBarAlwaysOn + + + Qt::ScrollBarAlwaysOff + + + + + 0 + 0 + 958 + 487 + + + + + + 80 + 20 + 600 + 160 + + + + + 9 + + + + 基本设置 + + + + 0 + + + 0 + + + 20 + + + 0 + + + 0 + + + + + + 0 + 0 + + + + + 0 + 50 + + + + 日志保存路径 + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + 20 + + + + + + + + 0 + 50 + + + + + + + + 识别方式 + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + 20 + + + + + + + + 0 + 0 + + + + + 200 + 50 + + + + + + + + + + + + + QDialogButtonBox::Ok + + + + - + + + diff --git a/CasicBioRecNew.pro b/CasicBioRecNew.pro index d4db4e2..a6059d8 100644 --- a/CasicBioRecNew.pro +++ b/CasicBioRecNew.pro @@ -52,12 +52,12 @@ FORMS += RecognizeResultForm.ui DISTFILES += conf/config.ini -DISTFILES += conf/log.conf DISTFILES += qss/startup.css DISTFILES += qss/personList.css DISTFILES += qss/addPerson.css DISTFILES += qss/dialogTips.css DISTFILES += qss/recognize.css +DISTFILES += qss/setting.css RESOURCES += resource.qrc diff --git a/CasicBioRecWin.cpp b/CasicBioRecWin.cpp index bf6ffe3..c391575 100644 --- a/CasicBioRecWin.cpp +++ b/CasicBioRecWin.cpp @@ -1,4 +1,4 @@ -#include "CasicBioRecWin.h" +#include "CasicBioRecWin.h" #include "ui_CasicBioRecWin.h" CasicBioRecWin::CasicBioRecWin(QWidget *parent) @@ -17,8 +17,7 @@ // 设置窗口透明和大小、位置 this->setWindowFlags(Qt::FramelessWindowHint); this->move(0, 0); - this->resize(SettingConfig::getInstance().WINDOW_WIDTH, - SettingConfig::getInstance().WINDOW_HEIGHT); + this->resize(SettingConfig::getInstance().WINDOW_WIDTH, SettingConfig::getInstance().WINDOW_HEIGHT); // 通过调色板的颜色来设置窗口的统一背景色 qApp->setPalette(QPalette(QColor(SettingConfig::getInstance().WINDOW_BACKGROUND_COLOR))); @@ -100,8 +99,6 @@ { switch (event->key()) { case Qt::Key_Escape: - //LOG(INFO) << "" << std::endl; - LOG_INFO(" \n\r"); QTimer::singleShot(100, qApp, SLOT(quit())); default: @@ -123,6 +120,7 @@ } void CasicBioRecWin::switchToSettingForm() { + ui->stacked->setCurrentWidget(settingForm); ProMemory::getInstance().widgeFrame = CasicBioRecConst::WidgeFrameName::SETTING_FORM; } void CasicBioRecWin::switchToRegistForm(QString personId) @@ -175,6 +173,7 @@ this, &CasicBioRecWin::switchToSettingForm); connect(startForm, &StartupForm::startRecognize, this, &CasicBioRecWin::switchToRecognizeForm); + connect(startForm, &StartupForm::recognizeTimeout, recogResultForm, &RecognizeResultForm::showRecogFailure); connect(personListForm, &PersonListForm::switchToRegistForm, this, &CasicBioRecWin::switchToRegistForm); @@ -188,6 +187,9 @@ connect(recogResultForm, &RecognizeResultForm::backToHomeAndWait, this, &CasicBioRecWin::backToStandByForm); + + connect(settingForm, &SettingForm::backToHomePage, + this, &CasicBioRecWin::backToStandByForm); } void CasicBioRecWin::initCacheData() diff --git a/SettingForm.cpp b/SettingForm.cpp index 149e4d8..4772df3 100644 --- a/SettingForm.cpp +++ b/SettingForm.cpp @@ -1,14 +1,62 @@ -#include "SettingForm.h" +#include "SettingForm.h" #include "ui_SettingForm.h" +#pragma execution_character_set("utf-8") + SettingForm::SettingForm(QWidget *parent) : QWidget(parent), ui(new Ui::SettingForm) { ui->setupUi(this); + + // 加载css文件设置控件样式 + QFile file(QApplication::applicationDirPath() + "/qss/setting.css"); + if (file.open(QFile::ReadOnly)) + { + QString qssStr = QLatin1String(file.readAll()); + this->setStyleSheet(qssStr); + file.close(); + } + + ui->scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn); + ui->scrollContents->setMinimumWidth(SettingConfig::getInstance().WINDOW_WIDTH); + ui->basicBox->setMinimumWidth(SettingConfig::getInstance().WINDOW_WIDTH - 140); + ui->btnSetDialog->button(QDialogButtonBox::Ok)->setText("确定"); + + this->initDefaultSetting(); } SettingForm::~SettingForm() { delete ui; } + +void SettingForm::initDefaultSetting() +{ + ui->iptLogPath->setText(SettingConfig::getInstance().LOG_FILE); + ui->iptLogPath->setReadOnly(true); + + ui->selectRecogMod->addItem(QString("人脸识别"), 1); + ui->selectRecogMod->addItem(QString("虹膜识别"), 2); + ui->selectRecogMod->addItem(QString("双认证"), 3); + ui->selectRecogMod->addItem(QString("任意认证"), 4); + ui->selectRecogMod->setCurrentIndex(SettingConfig::getInstance().RECOG_TYPE - 1); +} + +void SettingForm::on_btnBack_clicked() +{ + emit backToHomePage(); +} + +void SettingForm::on_btnHome_clicked() +{ + emit backToHomePage(); +} + +void SettingForm::on_btnSetDialog_accepted() +{ + SettingConfig::getInstance().RECOG_TYPE = ui->selectRecogMod->currentIndex() + 1; + SettingConfig::getInstance().setProperty("recognize", "recogType", QString::number(ui->selectRecogMod->currentIndex() + 1)); + + emit backToHomePage(); +} diff --git a/SettingForm.h b/SettingForm.h index 9a8eafa..e05391d 100644 --- a/SettingForm.h +++ b/SettingForm.h @@ -1,7 +1,11 @@ -#ifndef SETTINGFORM_H +#ifndef SETTINGFORM_H #define SETTINGFORM_H #include +#include +#include +#include +#include "utils/UtilInclude.h" namespace Ui { class SettingForm; @@ -15,8 +19,20 @@ explicit SettingForm(QWidget *parent = nullptr); ~SettingForm(); +private slots: + void on_btnBack_clicked(); + + void on_btnHome_clicked(); + + void on_btnSetDialog_accepted(); + private: Ui::SettingForm *ui; + + void initDefaultSetting(); + +signals: + void backToHomePage(); }; #endif // SETTINGFORM_H diff --git a/SettingForm.ui b/SettingForm.ui index 7816547..bc8c12e 100644 --- a/SettingForm.ui +++ b/SettingForm.ui @@ -1,21 +1,243 @@ + - - - SettingForm 0 0 - 400 - 300 + 960 + 600 Form + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + 0 + + + + + 0 + + + 15 + + + 15 + + + 15 + + + 15 + + + + + ... + + + + :/images/back.png:/images/back.png + + + + 52 + 52 + + + + + + + + 系统设置 + + + Qt::AlignCenter + + + + + + + ... + + + + :/images/home.png:/images/home.png + + + + 52 + 52 + + + + + + + + + + + + 12 + + + + QFrame::StyledPanel + + + Qt::ScrollBarAlwaysOn + + + Qt::ScrollBarAlwaysOff + + + + + 0 + 0 + 958 + 487 + + + + + + 80 + 20 + 600 + 160 + + + + + 9 + + + + 基本设置 + + + + 0 + + + 0 + + + 20 + + + 0 + + + 0 + + + + + + 0 + 0 + + + + + 0 + 50 + + + + 日志保存路径 + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + 20 + + + + + + + + 0 + 50 + + + + + + + + 识别方式 + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + 20 + + + + + + + + 0 + 0 + + + + + 200 + 50 + + + + + + + + + + + + + QDialogButtonBox::Ok + + + + - + + + diff --git a/StartupForm.cpp b/StartupForm.cpp index ab80e21..605e1ba 100644 --- a/StartupForm.cpp +++ b/StartupForm.cpp @@ -1,4 +1,4 @@ -#include "StartupForm.h" +#include "StartupForm.h" #include "ui_StartupForm.h" StartupForm::StartupForm(QWidget *parent) : @@ -94,13 +94,20 @@ if (hasFace == true) { //LOG(INFO) << QString("检测到人脸,START RECOGNIZE 线程").toStdString(); - LOG_INFO(QString("检测到人脸,START RECOGNIZE 线程").toStdString()); + LOG_INFO(QString("检测到人脸 START RECOGNIZE 线程").toStdString()); ProMemory::getInstance().appState = CasicBioRecConst::ApplicationState::STATE_WORKING; // 启动识别线程 // 槽函数 CasicBioRecWin::switchToRecognizeForm emit startRecognize(); + // 到最大识别时间仍未识别成功则返回失败 + QTimer::singleShot(SettingConfig::getInstance().MAX_MATCH_TIME, this, [=](){ + if (ProMemory::getInstance().widgeFrame == CasicBioRecConst::WidgeFrameName::MAIN_PAGE) { + emit recognizeTimeout(); + } + }); + // 退出 return ; } diff --git a/CasicBioRecNew.pro b/CasicBioRecNew.pro index d4db4e2..a6059d8 100644 --- a/CasicBioRecNew.pro +++ b/CasicBioRecNew.pro @@ -52,12 +52,12 @@ FORMS += RecognizeResultForm.ui DISTFILES += conf/config.ini -DISTFILES += conf/log.conf DISTFILES += qss/startup.css DISTFILES += qss/personList.css DISTFILES += qss/addPerson.css DISTFILES += qss/dialogTips.css DISTFILES += qss/recognize.css +DISTFILES += qss/setting.css RESOURCES += resource.qrc diff --git a/CasicBioRecWin.cpp b/CasicBioRecWin.cpp index bf6ffe3..c391575 100644 --- a/CasicBioRecWin.cpp +++ b/CasicBioRecWin.cpp @@ -1,4 +1,4 @@ -#include "CasicBioRecWin.h" +#include "CasicBioRecWin.h" #include "ui_CasicBioRecWin.h" CasicBioRecWin::CasicBioRecWin(QWidget *parent) @@ -17,8 +17,7 @@ // 设置窗口透明和大小、位置 this->setWindowFlags(Qt::FramelessWindowHint); this->move(0, 0); - this->resize(SettingConfig::getInstance().WINDOW_WIDTH, - SettingConfig::getInstance().WINDOW_HEIGHT); + this->resize(SettingConfig::getInstance().WINDOW_WIDTH, SettingConfig::getInstance().WINDOW_HEIGHT); // 通过调色板的颜色来设置窗口的统一背景色 qApp->setPalette(QPalette(QColor(SettingConfig::getInstance().WINDOW_BACKGROUND_COLOR))); @@ -100,8 +99,6 @@ { switch (event->key()) { case Qt::Key_Escape: - //LOG(INFO) << "" << std::endl; - LOG_INFO(" \n\r"); QTimer::singleShot(100, qApp, SLOT(quit())); default: @@ -123,6 +120,7 @@ } void CasicBioRecWin::switchToSettingForm() { + ui->stacked->setCurrentWidget(settingForm); ProMemory::getInstance().widgeFrame = CasicBioRecConst::WidgeFrameName::SETTING_FORM; } void CasicBioRecWin::switchToRegistForm(QString personId) @@ -175,6 +173,7 @@ this, &CasicBioRecWin::switchToSettingForm); connect(startForm, &StartupForm::startRecognize, this, &CasicBioRecWin::switchToRecognizeForm); + connect(startForm, &StartupForm::recognizeTimeout, recogResultForm, &RecognizeResultForm::showRecogFailure); connect(personListForm, &PersonListForm::switchToRegistForm, this, &CasicBioRecWin::switchToRegistForm); @@ -188,6 +187,9 @@ connect(recogResultForm, &RecognizeResultForm::backToHomeAndWait, this, &CasicBioRecWin::backToStandByForm); + + connect(settingForm, &SettingForm::backToHomePage, + this, &CasicBioRecWin::backToStandByForm); } void CasicBioRecWin::initCacheData() diff --git a/SettingForm.cpp b/SettingForm.cpp index 149e4d8..4772df3 100644 --- a/SettingForm.cpp +++ b/SettingForm.cpp @@ -1,14 +1,62 @@ -#include "SettingForm.h" +#include "SettingForm.h" #include "ui_SettingForm.h" +#pragma execution_character_set("utf-8") + SettingForm::SettingForm(QWidget *parent) : QWidget(parent), ui(new Ui::SettingForm) { ui->setupUi(this); + + // 加载css文件设置控件样式 + QFile file(QApplication::applicationDirPath() + "/qss/setting.css"); + if (file.open(QFile::ReadOnly)) + { + QString qssStr = QLatin1String(file.readAll()); + this->setStyleSheet(qssStr); + file.close(); + } + + ui->scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn); + ui->scrollContents->setMinimumWidth(SettingConfig::getInstance().WINDOW_WIDTH); + ui->basicBox->setMinimumWidth(SettingConfig::getInstance().WINDOW_WIDTH - 140); + ui->btnSetDialog->button(QDialogButtonBox::Ok)->setText("确定"); + + this->initDefaultSetting(); } SettingForm::~SettingForm() { delete ui; } + +void SettingForm::initDefaultSetting() +{ + ui->iptLogPath->setText(SettingConfig::getInstance().LOG_FILE); + ui->iptLogPath->setReadOnly(true); + + ui->selectRecogMod->addItem(QString("人脸识别"), 1); + ui->selectRecogMod->addItem(QString("虹膜识别"), 2); + ui->selectRecogMod->addItem(QString("双认证"), 3); + ui->selectRecogMod->addItem(QString("任意认证"), 4); + ui->selectRecogMod->setCurrentIndex(SettingConfig::getInstance().RECOG_TYPE - 1); +} + +void SettingForm::on_btnBack_clicked() +{ + emit backToHomePage(); +} + +void SettingForm::on_btnHome_clicked() +{ + emit backToHomePage(); +} + +void SettingForm::on_btnSetDialog_accepted() +{ + SettingConfig::getInstance().RECOG_TYPE = ui->selectRecogMod->currentIndex() + 1; + SettingConfig::getInstance().setProperty("recognize", "recogType", QString::number(ui->selectRecogMod->currentIndex() + 1)); + + emit backToHomePage(); +} diff --git a/SettingForm.h b/SettingForm.h index 9a8eafa..e05391d 100644 --- a/SettingForm.h +++ b/SettingForm.h @@ -1,7 +1,11 @@ -#ifndef SETTINGFORM_H +#ifndef SETTINGFORM_H #define SETTINGFORM_H #include +#include +#include +#include +#include "utils/UtilInclude.h" namespace Ui { class SettingForm; @@ -15,8 +19,20 @@ explicit SettingForm(QWidget *parent = nullptr); ~SettingForm(); +private slots: + void on_btnBack_clicked(); + + void on_btnHome_clicked(); + + void on_btnSetDialog_accepted(); + private: Ui::SettingForm *ui; + + void initDefaultSetting(); + +signals: + void backToHomePage(); }; #endif // SETTINGFORM_H diff --git a/SettingForm.ui b/SettingForm.ui index 7816547..bc8c12e 100644 --- a/SettingForm.ui +++ b/SettingForm.ui @@ -1,21 +1,243 @@ + - - - SettingForm 0 0 - 400 - 300 + 960 + 600 Form + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + 0 + + + + + 0 + + + 15 + + + 15 + + + 15 + + + 15 + + + + + ... + + + + :/images/back.png:/images/back.png + + + + 52 + 52 + + + + + + + + 系统设置 + + + Qt::AlignCenter + + + + + + + ... + + + + :/images/home.png:/images/home.png + + + + 52 + 52 + + + + + + + + + + + + 12 + + + + QFrame::StyledPanel + + + Qt::ScrollBarAlwaysOn + + + Qt::ScrollBarAlwaysOff + + + + + 0 + 0 + 958 + 487 + + + + + + 80 + 20 + 600 + 160 + + + + + 9 + + + + 基本设置 + + + + 0 + + + 0 + + + 20 + + + 0 + + + 0 + + + + + + 0 + 0 + + + + + 0 + 50 + + + + 日志保存路径 + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + 20 + + + + + + + + 0 + 50 + + + + + + + + 识别方式 + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + 20 + + + + + + + + 0 + 0 + + + + + 200 + 50 + + + + + + + + + + + + + QDialogButtonBox::Ok + + + + - + + + diff --git a/StartupForm.cpp b/StartupForm.cpp index ab80e21..605e1ba 100644 --- a/StartupForm.cpp +++ b/StartupForm.cpp @@ -1,4 +1,4 @@ -#include "StartupForm.h" +#include "StartupForm.h" #include "ui_StartupForm.h" StartupForm::StartupForm(QWidget *parent) : @@ -94,13 +94,20 @@ if (hasFace == true) { //LOG(INFO) << QString("检测到人脸,START RECOGNIZE 线程").toStdString(); - LOG_INFO(QString("检测到人脸,START RECOGNIZE 线程").toStdString()); + LOG_INFO(QString("检测到人脸 START RECOGNIZE 线程").toStdString()); ProMemory::getInstance().appState = CasicBioRecConst::ApplicationState::STATE_WORKING; // 启动识别线程 // 槽函数 CasicBioRecWin::switchToRecognizeForm emit startRecognize(); + // 到最大识别时间仍未识别成功则返回失败 + QTimer::singleShot(SettingConfig::getInstance().MAX_MATCH_TIME, this, [=](){ + if (ProMemory::getInstance().widgeFrame == CasicBioRecConst::WidgeFrameName::MAIN_PAGE) { + emit recognizeTimeout(); + } + }); + // 退出 return ; } diff --git a/StartupForm.h b/StartupForm.h index fc79be0..e00880f 100644 --- a/StartupForm.h +++ b/StartupForm.h @@ -1,4 +1,4 @@ -#ifndef STARTUPFORM_H +#ifndef STARTUPFORM_H #define STARTUPFORM_H #include @@ -35,6 +35,7 @@ void switchToSettingForm(); void startRecognize(); + void recognizeTimeout(); }; #endif // STARTUPFORM_H diff --git a/CasicBioRecNew.pro b/CasicBioRecNew.pro index d4db4e2..a6059d8 100644 --- a/CasicBioRecNew.pro +++ b/CasicBioRecNew.pro @@ -52,12 +52,12 @@ FORMS += RecognizeResultForm.ui DISTFILES += conf/config.ini -DISTFILES += conf/log.conf DISTFILES += qss/startup.css DISTFILES += qss/personList.css DISTFILES += qss/addPerson.css DISTFILES += qss/dialogTips.css DISTFILES += qss/recognize.css +DISTFILES += qss/setting.css RESOURCES += resource.qrc diff --git a/CasicBioRecWin.cpp b/CasicBioRecWin.cpp index bf6ffe3..c391575 100644 --- a/CasicBioRecWin.cpp +++ b/CasicBioRecWin.cpp @@ -1,4 +1,4 @@ -#include "CasicBioRecWin.h" +#include "CasicBioRecWin.h" #include "ui_CasicBioRecWin.h" CasicBioRecWin::CasicBioRecWin(QWidget *parent) @@ -17,8 +17,7 @@ // 设置窗口透明和大小、位置 this->setWindowFlags(Qt::FramelessWindowHint); this->move(0, 0); - this->resize(SettingConfig::getInstance().WINDOW_WIDTH, - SettingConfig::getInstance().WINDOW_HEIGHT); + this->resize(SettingConfig::getInstance().WINDOW_WIDTH, SettingConfig::getInstance().WINDOW_HEIGHT); // 通过调色板的颜色来设置窗口的统一背景色 qApp->setPalette(QPalette(QColor(SettingConfig::getInstance().WINDOW_BACKGROUND_COLOR))); @@ -100,8 +99,6 @@ { switch (event->key()) { case Qt::Key_Escape: - //LOG(INFO) << "" << std::endl; - LOG_INFO(" \n\r"); QTimer::singleShot(100, qApp, SLOT(quit())); default: @@ -123,6 +120,7 @@ } void CasicBioRecWin::switchToSettingForm() { + ui->stacked->setCurrentWidget(settingForm); ProMemory::getInstance().widgeFrame = CasicBioRecConst::WidgeFrameName::SETTING_FORM; } void CasicBioRecWin::switchToRegistForm(QString personId) @@ -175,6 +173,7 @@ this, &CasicBioRecWin::switchToSettingForm); connect(startForm, &StartupForm::startRecognize, this, &CasicBioRecWin::switchToRecognizeForm); + connect(startForm, &StartupForm::recognizeTimeout, recogResultForm, &RecognizeResultForm::showRecogFailure); connect(personListForm, &PersonListForm::switchToRegistForm, this, &CasicBioRecWin::switchToRegistForm); @@ -188,6 +187,9 @@ connect(recogResultForm, &RecognizeResultForm::backToHomeAndWait, this, &CasicBioRecWin::backToStandByForm); + + connect(settingForm, &SettingForm::backToHomePage, + this, &CasicBioRecWin::backToStandByForm); } void CasicBioRecWin::initCacheData() diff --git a/SettingForm.cpp b/SettingForm.cpp index 149e4d8..4772df3 100644 --- a/SettingForm.cpp +++ b/SettingForm.cpp @@ -1,14 +1,62 @@ -#include "SettingForm.h" +#include "SettingForm.h" #include "ui_SettingForm.h" +#pragma execution_character_set("utf-8") + SettingForm::SettingForm(QWidget *parent) : QWidget(parent), ui(new Ui::SettingForm) { ui->setupUi(this); + + // 加载css文件设置控件样式 + QFile file(QApplication::applicationDirPath() + "/qss/setting.css"); + if (file.open(QFile::ReadOnly)) + { + QString qssStr = QLatin1String(file.readAll()); + this->setStyleSheet(qssStr); + file.close(); + } + + ui->scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn); + ui->scrollContents->setMinimumWidth(SettingConfig::getInstance().WINDOW_WIDTH); + ui->basicBox->setMinimumWidth(SettingConfig::getInstance().WINDOW_WIDTH - 140); + ui->btnSetDialog->button(QDialogButtonBox::Ok)->setText("确定"); + + this->initDefaultSetting(); } SettingForm::~SettingForm() { delete ui; } + +void SettingForm::initDefaultSetting() +{ + ui->iptLogPath->setText(SettingConfig::getInstance().LOG_FILE); + ui->iptLogPath->setReadOnly(true); + + ui->selectRecogMod->addItem(QString("人脸识别"), 1); + ui->selectRecogMod->addItem(QString("虹膜识别"), 2); + ui->selectRecogMod->addItem(QString("双认证"), 3); + ui->selectRecogMod->addItem(QString("任意认证"), 4); + ui->selectRecogMod->setCurrentIndex(SettingConfig::getInstance().RECOG_TYPE - 1); +} + +void SettingForm::on_btnBack_clicked() +{ + emit backToHomePage(); +} + +void SettingForm::on_btnHome_clicked() +{ + emit backToHomePage(); +} + +void SettingForm::on_btnSetDialog_accepted() +{ + SettingConfig::getInstance().RECOG_TYPE = ui->selectRecogMod->currentIndex() + 1; + SettingConfig::getInstance().setProperty("recognize", "recogType", QString::number(ui->selectRecogMod->currentIndex() + 1)); + + emit backToHomePage(); +} diff --git a/SettingForm.h b/SettingForm.h index 9a8eafa..e05391d 100644 --- a/SettingForm.h +++ b/SettingForm.h @@ -1,7 +1,11 @@ -#ifndef SETTINGFORM_H +#ifndef SETTINGFORM_H #define SETTINGFORM_H #include +#include +#include +#include +#include "utils/UtilInclude.h" namespace Ui { class SettingForm; @@ -15,8 +19,20 @@ explicit SettingForm(QWidget *parent = nullptr); ~SettingForm(); +private slots: + void on_btnBack_clicked(); + + void on_btnHome_clicked(); + + void on_btnSetDialog_accepted(); + private: Ui::SettingForm *ui; + + void initDefaultSetting(); + +signals: + void backToHomePage(); }; #endif // SETTINGFORM_H diff --git a/SettingForm.ui b/SettingForm.ui index 7816547..bc8c12e 100644 --- a/SettingForm.ui +++ b/SettingForm.ui @@ -1,21 +1,243 @@ + - - - SettingForm 0 0 - 400 - 300 + 960 + 600 Form + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + 0 + + + + + 0 + + + 15 + + + 15 + + + 15 + + + 15 + + + + + ... + + + + :/images/back.png:/images/back.png + + + + 52 + 52 + + + + + + + + 系统设置 + + + Qt::AlignCenter + + + + + + + ... + + + + :/images/home.png:/images/home.png + + + + 52 + 52 + + + + + + + + + + + + 12 + + + + QFrame::StyledPanel + + + Qt::ScrollBarAlwaysOn + + + Qt::ScrollBarAlwaysOff + + + + + 0 + 0 + 958 + 487 + + + + + + 80 + 20 + 600 + 160 + + + + + 9 + + + + 基本设置 + + + + 0 + + + 0 + + + 20 + + + 0 + + + 0 + + + + + + 0 + 0 + + + + + 0 + 50 + + + + 日志保存路径 + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + 20 + + + + + + + + 0 + 50 + + + + + + + + 识别方式 + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + 20 + + + + + + + + 0 + 0 + + + + + 200 + 50 + + + + + + + + + + + + + QDialogButtonBox::Ok + + + + - + + + diff --git a/StartupForm.cpp b/StartupForm.cpp index ab80e21..605e1ba 100644 --- a/StartupForm.cpp +++ b/StartupForm.cpp @@ -1,4 +1,4 @@ -#include "StartupForm.h" +#include "StartupForm.h" #include "ui_StartupForm.h" StartupForm::StartupForm(QWidget *parent) : @@ -94,13 +94,20 @@ if (hasFace == true) { //LOG(INFO) << QString("检测到人脸,START RECOGNIZE 线程").toStdString(); - LOG_INFO(QString("检测到人脸,START RECOGNIZE 线程").toStdString()); + LOG_INFO(QString("检测到人脸 START RECOGNIZE 线程").toStdString()); ProMemory::getInstance().appState = CasicBioRecConst::ApplicationState::STATE_WORKING; // 启动识别线程 // 槽函数 CasicBioRecWin::switchToRecognizeForm emit startRecognize(); + // 到最大识别时间仍未识别成功则返回失败 + QTimer::singleShot(SettingConfig::getInstance().MAX_MATCH_TIME, this, [=](){ + if (ProMemory::getInstance().widgeFrame == CasicBioRecConst::WidgeFrameName::MAIN_PAGE) { + emit recognizeTimeout(); + } + }); + // 退出 return ; } diff --git a/StartupForm.h b/StartupForm.h index fc79be0..e00880f 100644 --- a/StartupForm.h +++ b/StartupForm.h @@ -1,4 +1,4 @@ -#ifndef STARTUPFORM_H +#ifndef STARTUPFORM_H #define STARTUPFORM_H #include @@ -35,6 +35,7 @@ void switchToSettingForm(); void startRecognize(); + void recognizeTimeout(); }; #endif // STARTUPFORM_H diff --git a/images/add_bottom.png b/images/add_bottom.png new file mode 100644 index 0000000..2f8c0f2 --- /dev/null +++ b/images/add_bottom.png Binary files differ diff --git a/CasicBioRecNew.pro b/CasicBioRecNew.pro index d4db4e2..a6059d8 100644 --- a/CasicBioRecNew.pro +++ b/CasicBioRecNew.pro @@ -52,12 +52,12 @@ FORMS += RecognizeResultForm.ui DISTFILES += conf/config.ini -DISTFILES += conf/log.conf DISTFILES += qss/startup.css DISTFILES += qss/personList.css DISTFILES += qss/addPerson.css DISTFILES += qss/dialogTips.css DISTFILES += qss/recognize.css +DISTFILES += qss/setting.css RESOURCES += resource.qrc diff --git a/CasicBioRecWin.cpp b/CasicBioRecWin.cpp index bf6ffe3..c391575 100644 --- a/CasicBioRecWin.cpp +++ b/CasicBioRecWin.cpp @@ -1,4 +1,4 @@ -#include "CasicBioRecWin.h" +#include "CasicBioRecWin.h" #include "ui_CasicBioRecWin.h" CasicBioRecWin::CasicBioRecWin(QWidget *parent) @@ -17,8 +17,7 @@ // 设置窗口透明和大小、位置 this->setWindowFlags(Qt::FramelessWindowHint); this->move(0, 0); - this->resize(SettingConfig::getInstance().WINDOW_WIDTH, - SettingConfig::getInstance().WINDOW_HEIGHT); + this->resize(SettingConfig::getInstance().WINDOW_WIDTH, SettingConfig::getInstance().WINDOW_HEIGHT); // 通过调色板的颜色来设置窗口的统一背景色 qApp->setPalette(QPalette(QColor(SettingConfig::getInstance().WINDOW_BACKGROUND_COLOR))); @@ -100,8 +99,6 @@ { switch (event->key()) { case Qt::Key_Escape: - //LOG(INFO) << "" << std::endl; - LOG_INFO(" \n\r"); QTimer::singleShot(100, qApp, SLOT(quit())); default: @@ -123,6 +120,7 @@ } void CasicBioRecWin::switchToSettingForm() { + ui->stacked->setCurrentWidget(settingForm); ProMemory::getInstance().widgeFrame = CasicBioRecConst::WidgeFrameName::SETTING_FORM; } void CasicBioRecWin::switchToRegistForm(QString personId) @@ -175,6 +173,7 @@ this, &CasicBioRecWin::switchToSettingForm); connect(startForm, &StartupForm::startRecognize, this, &CasicBioRecWin::switchToRecognizeForm); + connect(startForm, &StartupForm::recognizeTimeout, recogResultForm, &RecognizeResultForm::showRecogFailure); connect(personListForm, &PersonListForm::switchToRegistForm, this, &CasicBioRecWin::switchToRegistForm); @@ -188,6 +187,9 @@ connect(recogResultForm, &RecognizeResultForm::backToHomeAndWait, this, &CasicBioRecWin::backToStandByForm); + + connect(settingForm, &SettingForm::backToHomePage, + this, &CasicBioRecWin::backToStandByForm); } void CasicBioRecWin::initCacheData() diff --git a/SettingForm.cpp b/SettingForm.cpp index 149e4d8..4772df3 100644 --- a/SettingForm.cpp +++ b/SettingForm.cpp @@ -1,14 +1,62 @@ -#include "SettingForm.h" +#include "SettingForm.h" #include "ui_SettingForm.h" +#pragma execution_character_set("utf-8") + SettingForm::SettingForm(QWidget *parent) : QWidget(parent), ui(new Ui::SettingForm) { ui->setupUi(this); + + // 加载css文件设置控件样式 + QFile file(QApplication::applicationDirPath() + "/qss/setting.css"); + if (file.open(QFile::ReadOnly)) + { + QString qssStr = QLatin1String(file.readAll()); + this->setStyleSheet(qssStr); + file.close(); + } + + ui->scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn); + ui->scrollContents->setMinimumWidth(SettingConfig::getInstance().WINDOW_WIDTH); + ui->basicBox->setMinimumWidth(SettingConfig::getInstance().WINDOW_WIDTH - 140); + ui->btnSetDialog->button(QDialogButtonBox::Ok)->setText("确定"); + + this->initDefaultSetting(); } SettingForm::~SettingForm() { delete ui; } + +void SettingForm::initDefaultSetting() +{ + ui->iptLogPath->setText(SettingConfig::getInstance().LOG_FILE); + ui->iptLogPath->setReadOnly(true); + + ui->selectRecogMod->addItem(QString("人脸识别"), 1); + ui->selectRecogMod->addItem(QString("虹膜识别"), 2); + ui->selectRecogMod->addItem(QString("双认证"), 3); + ui->selectRecogMod->addItem(QString("任意认证"), 4); + ui->selectRecogMod->setCurrentIndex(SettingConfig::getInstance().RECOG_TYPE - 1); +} + +void SettingForm::on_btnBack_clicked() +{ + emit backToHomePage(); +} + +void SettingForm::on_btnHome_clicked() +{ + emit backToHomePage(); +} + +void SettingForm::on_btnSetDialog_accepted() +{ + SettingConfig::getInstance().RECOG_TYPE = ui->selectRecogMod->currentIndex() + 1; + SettingConfig::getInstance().setProperty("recognize", "recogType", QString::number(ui->selectRecogMod->currentIndex() + 1)); + + emit backToHomePage(); +} diff --git a/SettingForm.h b/SettingForm.h index 9a8eafa..e05391d 100644 --- a/SettingForm.h +++ b/SettingForm.h @@ -1,7 +1,11 @@ -#ifndef SETTINGFORM_H +#ifndef SETTINGFORM_H #define SETTINGFORM_H #include +#include +#include +#include +#include "utils/UtilInclude.h" namespace Ui { class SettingForm; @@ -15,8 +19,20 @@ explicit SettingForm(QWidget *parent = nullptr); ~SettingForm(); +private slots: + void on_btnBack_clicked(); + + void on_btnHome_clicked(); + + void on_btnSetDialog_accepted(); + private: Ui::SettingForm *ui; + + void initDefaultSetting(); + +signals: + void backToHomePage(); }; #endif // SETTINGFORM_H diff --git a/SettingForm.ui b/SettingForm.ui index 7816547..bc8c12e 100644 --- a/SettingForm.ui +++ b/SettingForm.ui @@ -1,21 +1,243 @@ + - - - SettingForm 0 0 - 400 - 300 + 960 + 600 Form + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + 0 + + + + + 0 + + + 15 + + + 15 + + + 15 + + + 15 + + + + + ... + + + + :/images/back.png:/images/back.png + + + + 52 + 52 + + + + + + + + 系统设置 + + + Qt::AlignCenter + + + + + + + ... + + + + :/images/home.png:/images/home.png + + + + 52 + 52 + + + + + + + + + + + + 12 + + + + QFrame::StyledPanel + + + Qt::ScrollBarAlwaysOn + + + Qt::ScrollBarAlwaysOff + + + + + 0 + 0 + 958 + 487 + + + + + + 80 + 20 + 600 + 160 + + + + + 9 + + + + 基本设置 + + + + 0 + + + 0 + + + 20 + + + 0 + + + 0 + + + + + + 0 + 0 + + + + + 0 + 50 + + + + 日志保存路径 + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + 20 + + + + + + + + 0 + 50 + + + + + + + + 识别方式 + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + 20 + + + + + + + + 0 + 0 + + + + + 200 + 50 + + + + + + + + + + + + + QDialogButtonBox::Ok + + + + - + + + diff --git a/StartupForm.cpp b/StartupForm.cpp index ab80e21..605e1ba 100644 --- a/StartupForm.cpp +++ b/StartupForm.cpp @@ -1,4 +1,4 @@ -#include "StartupForm.h" +#include "StartupForm.h" #include "ui_StartupForm.h" StartupForm::StartupForm(QWidget *parent) : @@ -94,13 +94,20 @@ if (hasFace == true) { //LOG(INFO) << QString("检测到人脸,START RECOGNIZE 线程").toStdString(); - LOG_INFO(QString("检测到人脸,START RECOGNIZE 线程").toStdString()); + LOG_INFO(QString("检测到人脸 START RECOGNIZE 线程").toStdString()); ProMemory::getInstance().appState = CasicBioRecConst::ApplicationState::STATE_WORKING; // 启动识别线程 // 槽函数 CasicBioRecWin::switchToRecognizeForm emit startRecognize(); + // 到最大识别时间仍未识别成功则返回失败 + QTimer::singleShot(SettingConfig::getInstance().MAX_MATCH_TIME, this, [=](){ + if (ProMemory::getInstance().widgeFrame == CasicBioRecConst::WidgeFrameName::MAIN_PAGE) { + emit recognizeTimeout(); + } + }); + // 退出 return ; } diff --git a/StartupForm.h b/StartupForm.h index fc79be0..e00880f 100644 --- a/StartupForm.h +++ b/StartupForm.h @@ -1,4 +1,4 @@ -#ifndef STARTUPFORM_H +#ifndef STARTUPFORM_H #define STARTUPFORM_H #include @@ -35,6 +35,7 @@ void switchToSettingForm(); void startRecognize(); + void recognizeTimeout(); }; #endif // STARTUPFORM_H diff --git a/images/add_bottom.png b/images/add_bottom.png new file mode 100644 index 0000000..2f8c0f2 --- /dev/null +++ b/images/add_bottom.png Binary files differ diff --git a/images/add_top.png b/images/add_top.png new file mode 100644 index 0000000..a5ceb4f --- /dev/null +++ b/images/add_top.png Binary files differ diff --git a/CasicBioRecNew.pro b/CasicBioRecNew.pro index d4db4e2..a6059d8 100644 --- a/CasicBioRecNew.pro +++ b/CasicBioRecNew.pro @@ -52,12 +52,12 @@ FORMS += RecognizeResultForm.ui DISTFILES += conf/config.ini -DISTFILES += conf/log.conf DISTFILES += qss/startup.css DISTFILES += qss/personList.css DISTFILES += qss/addPerson.css DISTFILES += qss/dialogTips.css DISTFILES += qss/recognize.css +DISTFILES += qss/setting.css RESOURCES += resource.qrc diff --git a/CasicBioRecWin.cpp b/CasicBioRecWin.cpp index bf6ffe3..c391575 100644 --- a/CasicBioRecWin.cpp +++ b/CasicBioRecWin.cpp @@ -1,4 +1,4 @@ -#include "CasicBioRecWin.h" +#include "CasicBioRecWin.h" #include "ui_CasicBioRecWin.h" CasicBioRecWin::CasicBioRecWin(QWidget *parent) @@ -17,8 +17,7 @@ // 设置窗口透明和大小、位置 this->setWindowFlags(Qt::FramelessWindowHint); this->move(0, 0); - this->resize(SettingConfig::getInstance().WINDOW_WIDTH, - SettingConfig::getInstance().WINDOW_HEIGHT); + this->resize(SettingConfig::getInstance().WINDOW_WIDTH, SettingConfig::getInstance().WINDOW_HEIGHT); // 通过调色板的颜色来设置窗口的统一背景色 qApp->setPalette(QPalette(QColor(SettingConfig::getInstance().WINDOW_BACKGROUND_COLOR))); @@ -100,8 +99,6 @@ { switch (event->key()) { case Qt::Key_Escape: - //LOG(INFO) << "" << std::endl; - LOG_INFO(" \n\r"); QTimer::singleShot(100, qApp, SLOT(quit())); default: @@ -123,6 +120,7 @@ } void CasicBioRecWin::switchToSettingForm() { + ui->stacked->setCurrentWidget(settingForm); ProMemory::getInstance().widgeFrame = CasicBioRecConst::WidgeFrameName::SETTING_FORM; } void CasicBioRecWin::switchToRegistForm(QString personId) @@ -175,6 +173,7 @@ this, &CasicBioRecWin::switchToSettingForm); connect(startForm, &StartupForm::startRecognize, this, &CasicBioRecWin::switchToRecognizeForm); + connect(startForm, &StartupForm::recognizeTimeout, recogResultForm, &RecognizeResultForm::showRecogFailure); connect(personListForm, &PersonListForm::switchToRegistForm, this, &CasicBioRecWin::switchToRegistForm); @@ -188,6 +187,9 @@ connect(recogResultForm, &RecognizeResultForm::backToHomeAndWait, this, &CasicBioRecWin::backToStandByForm); + + connect(settingForm, &SettingForm::backToHomePage, + this, &CasicBioRecWin::backToStandByForm); } void CasicBioRecWin::initCacheData() diff --git a/SettingForm.cpp b/SettingForm.cpp index 149e4d8..4772df3 100644 --- a/SettingForm.cpp +++ b/SettingForm.cpp @@ -1,14 +1,62 @@ -#include "SettingForm.h" +#include "SettingForm.h" #include "ui_SettingForm.h" +#pragma execution_character_set("utf-8") + SettingForm::SettingForm(QWidget *parent) : QWidget(parent), ui(new Ui::SettingForm) { ui->setupUi(this); + + // 加载css文件设置控件样式 + QFile file(QApplication::applicationDirPath() + "/qss/setting.css"); + if (file.open(QFile::ReadOnly)) + { + QString qssStr = QLatin1String(file.readAll()); + this->setStyleSheet(qssStr); + file.close(); + } + + ui->scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn); + ui->scrollContents->setMinimumWidth(SettingConfig::getInstance().WINDOW_WIDTH); + ui->basicBox->setMinimumWidth(SettingConfig::getInstance().WINDOW_WIDTH - 140); + ui->btnSetDialog->button(QDialogButtonBox::Ok)->setText("确定"); + + this->initDefaultSetting(); } SettingForm::~SettingForm() { delete ui; } + +void SettingForm::initDefaultSetting() +{ + ui->iptLogPath->setText(SettingConfig::getInstance().LOG_FILE); + ui->iptLogPath->setReadOnly(true); + + ui->selectRecogMod->addItem(QString("人脸识别"), 1); + ui->selectRecogMod->addItem(QString("虹膜识别"), 2); + ui->selectRecogMod->addItem(QString("双认证"), 3); + ui->selectRecogMod->addItem(QString("任意认证"), 4); + ui->selectRecogMod->setCurrentIndex(SettingConfig::getInstance().RECOG_TYPE - 1); +} + +void SettingForm::on_btnBack_clicked() +{ + emit backToHomePage(); +} + +void SettingForm::on_btnHome_clicked() +{ + emit backToHomePage(); +} + +void SettingForm::on_btnSetDialog_accepted() +{ + SettingConfig::getInstance().RECOG_TYPE = ui->selectRecogMod->currentIndex() + 1; + SettingConfig::getInstance().setProperty("recognize", "recogType", QString::number(ui->selectRecogMod->currentIndex() + 1)); + + emit backToHomePage(); +} diff --git a/SettingForm.h b/SettingForm.h index 9a8eafa..e05391d 100644 --- a/SettingForm.h +++ b/SettingForm.h @@ -1,7 +1,11 @@ -#ifndef SETTINGFORM_H +#ifndef SETTINGFORM_H #define SETTINGFORM_H #include +#include +#include +#include +#include "utils/UtilInclude.h" namespace Ui { class SettingForm; @@ -15,8 +19,20 @@ explicit SettingForm(QWidget *parent = nullptr); ~SettingForm(); +private slots: + void on_btnBack_clicked(); + + void on_btnHome_clicked(); + + void on_btnSetDialog_accepted(); + private: Ui::SettingForm *ui; + + void initDefaultSetting(); + +signals: + void backToHomePage(); }; #endif // SETTINGFORM_H diff --git a/SettingForm.ui b/SettingForm.ui index 7816547..bc8c12e 100644 --- a/SettingForm.ui +++ b/SettingForm.ui @@ -1,21 +1,243 @@ + - - - SettingForm 0 0 - 400 - 300 + 960 + 600 Form + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + 0 + + + + + 0 + + + 15 + + + 15 + + + 15 + + + 15 + + + + + ... + + + + :/images/back.png:/images/back.png + + + + 52 + 52 + + + + + + + + 系统设置 + + + Qt::AlignCenter + + + + + + + ... + + + + :/images/home.png:/images/home.png + + + + 52 + 52 + + + + + + + + + + + + 12 + + + + QFrame::StyledPanel + + + Qt::ScrollBarAlwaysOn + + + Qt::ScrollBarAlwaysOff + + + + + 0 + 0 + 958 + 487 + + + + + + 80 + 20 + 600 + 160 + + + + + 9 + + + + 基本设置 + + + + 0 + + + 0 + + + 20 + + + 0 + + + 0 + + + + + + 0 + 0 + + + + + 0 + 50 + + + + 日志保存路径 + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + 20 + + + + + + + + 0 + 50 + + + + + + + + 识别方式 + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + 20 + + + + + + + + 0 + 0 + + + + + 200 + 50 + + + + + + + + + + + + + QDialogButtonBox::Ok + + + + - + + + diff --git a/StartupForm.cpp b/StartupForm.cpp index ab80e21..605e1ba 100644 --- a/StartupForm.cpp +++ b/StartupForm.cpp @@ -1,4 +1,4 @@ -#include "StartupForm.h" +#include "StartupForm.h" #include "ui_StartupForm.h" StartupForm::StartupForm(QWidget *parent) : @@ -94,13 +94,20 @@ if (hasFace == true) { //LOG(INFO) << QString("检测到人脸,START RECOGNIZE 线程").toStdString(); - LOG_INFO(QString("检测到人脸,START RECOGNIZE 线程").toStdString()); + LOG_INFO(QString("检测到人脸 START RECOGNIZE 线程").toStdString()); ProMemory::getInstance().appState = CasicBioRecConst::ApplicationState::STATE_WORKING; // 启动识别线程 // 槽函数 CasicBioRecWin::switchToRecognizeForm emit startRecognize(); + // 到最大识别时间仍未识别成功则返回失败 + QTimer::singleShot(SettingConfig::getInstance().MAX_MATCH_TIME, this, [=](){ + if (ProMemory::getInstance().widgeFrame == CasicBioRecConst::WidgeFrameName::MAIN_PAGE) { + emit recognizeTimeout(); + } + }); + // 退出 return ; } diff --git a/StartupForm.h b/StartupForm.h index fc79be0..e00880f 100644 --- a/StartupForm.h +++ b/StartupForm.h @@ -1,4 +1,4 @@ -#ifndef STARTUPFORM_H +#ifndef STARTUPFORM_H #define STARTUPFORM_H #include @@ -35,6 +35,7 @@ void switchToSettingForm(); void startRecognize(); + void recognizeTimeout(); }; #endif // STARTUPFORM_H diff --git a/images/add_bottom.png b/images/add_bottom.png new file mode 100644 index 0000000..2f8c0f2 --- /dev/null +++ b/images/add_bottom.png Binary files differ diff --git a/images/add_top.png b/images/add_top.png new file mode 100644 index 0000000..a5ceb4f --- /dev/null +++ b/images/add_top.png Binary files differ diff --git a/main.cpp b/main.cpp index f48b918..049a403 100644 --- a/main.cpp +++ b/main.cpp @@ -4,8 +4,6 @@ #include //闪退调试 #include //闪退调试 -//INITIALIZE_EASYLOGGINGPP // 初始化easylogging++组件库 - //程式异常捕获 LONG ApplicationCrashHandler(EXCEPTION_POINTERS *pException) @@ -36,16 +34,6 @@ //设置异常拦截 SetUnhandledExceptionFilter((LPTOP_LEVEL_EXCEPTION_FILTER)ApplicationCrashHandler);//注冊异常捕获函数 - // Load conf setting - //el::Configurations conf(QApplication::applicationDirPath().toStdString() + "/conf/log.conf"); - //el::Loggers::reconfigureAllLoggers(conf); - - // Fatal level do not stop program - //el::Loggers::addFlag(el::LoggingFlag::DisableApplicationAbortOnFatalLog); - - // Init Verbose level - //el::Loggers::setVerboseLevel(9); - CasicBioRecWin w; w.show(); return a.exec(); diff --git a/CasicBioRecNew.pro b/CasicBioRecNew.pro index d4db4e2..a6059d8 100644 --- a/CasicBioRecNew.pro +++ b/CasicBioRecNew.pro @@ -52,12 +52,12 @@ FORMS += RecognizeResultForm.ui DISTFILES += conf/config.ini -DISTFILES += conf/log.conf DISTFILES += qss/startup.css DISTFILES += qss/personList.css DISTFILES += qss/addPerson.css DISTFILES += qss/dialogTips.css DISTFILES += qss/recognize.css +DISTFILES += qss/setting.css RESOURCES += resource.qrc diff --git a/CasicBioRecWin.cpp b/CasicBioRecWin.cpp index bf6ffe3..c391575 100644 --- a/CasicBioRecWin.cpp +++ b/CasicBioRecWin.cpp @@ -1,4 +1,4 @@ -#include "CasicBioRecWin.h" +#include "CasicBioRecWin.h" #include "ui_CasicBioRecWin.h" CasicBioRecWin::CasicBioRecWin(QWidget *parent) @@ -17,8 +17,7 @@ // 设置窗口透明和大小、位置 this->setWindowFlags(Qt::FramelessWindowHint); this->move(0, 0); - this->resize(SettingConfig::getInstance().WINDOW_WIDTH, - SettingConfig::getInstance().WINDOW_HEIGHT); + this->resize(SettingConfig::getInstance().WINDOW_WIDTH, SettingConfig::getInstance().WINDOW_HEIGHT); // 通过调色板的颜色来设置窗口的统一背景色 qApp->setPalette(QPalette(QColor(SettingConfig::getInstance().WINDOW_BACKGROUND_COLOR))); @@ -100,8 +99,6 @@ { switch (event->key()) { case Qt::Key_Escape: - //LOG(INFO) << "" << std::endl; - LOG_INFO(" \n\r"); QTimer::singleShot(100, qApp, SLOT(quit())); default: @@ -123,6 +120,7 @@ } void CasicBioRecWin::switchToSettingForm() { + ui->stacked->setCurrentWidget(settingForm); ProMemory::getInstance().widgeFrame = CasicBioRecConst::WidgeFrameName::SETTING_FORM; } void CasicBioRecWin::switchToRegistForm(QString personId) @@ -175,6 +173,7 @@ this, &CasicBioRecWin::switchToSettingForm); connect(startForm, &StartupForm::startRecognize, this, &CasicBioRecWin::switchToRecognizeForm); + connect(startForm, &StartupForm::recognizeTimeout, recogResultForm, &RecognizeResultForm::showRecogFailure); connect(personListForm, &PersonListForm::switchToRegistForm, this, &CasicBioRecWin::switchToRegistForm); @@ -188,6 +187,9 @@ connect(recogResultForm, &RecognizeResultForm::backToHomeAndWait, this, &CasicBioRecWin::backToStandByForm); + + connect(settingForm, &SettingForm::backToHomePage, + this, &CasicBioRecWin::backToStandByForm); } void CasicBioRecWin::initCacheData() diff --git a/SettingForm.cpp b/SettingForm.cpp index 149e4d8..4772df3 100644 --- a/SettingForm.cpp +++ b/SettingForm.cpp @@ -1,14 +1,62 @@ -#include "SettingForm.h" +#include "SettingForm.h" #include "ui_SettingForm.h" +#pragma execution_character_set("utf-8") + SettingForm::SettingForm(QWidget *parent) : QWidget(parent), ui(new Ui::SettingForm) { ui->setupUi(this); + + // 加载css文件设置控件样式 + QFile file(QApplication::applicationDirPath() + "/qss/setting.css"); + if (file.open(QFile::ReadOnly)) + { + QString qssStr = QLatin1String(file.readAll()); + this->setStyleSheet(qssStr); + file.close(); + } + + ui->scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn); + ui->scrollContents->setMinimumWidth(SettingConfig::getInstance().WINDOW_WIDTH); + ui->basicBox->setMinimumWidth(SettingConfig::getInstance().WINDOW_WIDTH - 140); + ui->btnSetDialog->button(QDialogButtonBox::Ok)->setText("确定"); + + this->initDefaultSetting(); } SettingForm::~SettingForm() { delete ui; } + +void SettingForm::initDefaultSetting() +{ + ui->iptLogPath->setText(SettingConfig::getInstance().LOG_FILE); + ui->iptLogPath->setReadOnly(true); + + ui->selectRecogMod->addItem(QString("人脸识别"), 1); + ui->selectRecogMod->addItem(QString("虹膜识别"), 2); + ui->selectRecogMod->addItem(QString("双认证"), 3); + ui->selectRecogMod->addItem(QString("任意认证"), 4); + ui->selectRecogMod->setCurrentIndex(SettingConfig::getInstance().RECOG_TYPE - 1); +} + +void SettingForm::on_btnBack_clicked() +{ + emit backToHomePage(); +} + +void SettingForm::on_btnHome_clicked() +{ + emit backToHomePage(); +} + +void SettingForm::on_btnSetDialog_accepted() +{ + SettingConfig::getInstance().RECOG_TYPE = ui->selectRecogMod->currentIndex() + 1; + SettingConfig::getInstance().setProperty("recognize", "recogType", QString::number(ui->selectRecogMod->currentIndex() + 1)); + + emit backToHomePage(); +} diff --git a/SettingForm.h b/SettingForm.h index 9a8eafa..e05391d 100644 --- a/SettingForm.h +++ b/SettingForm.h @@ -1,7 +1,11 @@ -#ifndef SETTINGFORM_H +#ifndef SETTINGFORM_H #define SETTINGFORM_H #include +#include +#include +#include +#include "utils/UtilInclude.h" namespace Ui { class SettingForm; @@ -15,8 +19,20 @@ explicit SettingForm(QWidget *parent = nullptr); ~SettingForm(); +private slots: + void on_btnBack_clicked(); + + void on_btnHome_clicked(); + + void on_btnSetDialog_accepted(); + private: Ui::SettingForm *ui; + + void initDefaultSetting(); + +signals: + void backToHomePage(); }; #endif // SETTINGFORM_H diff --git a/SettingForm.ui b/SettingForm.ui index 7816547..bc8c12e 100644 --- a/SettingForm.ui +++ b/SettingForm.ui @@ -1,21 +1,243 @@ + - - - SettingForm 0 0 - 400 - 300 + 960 + 600 Form + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + 0 + + + + + 0 + + + 15 + + + 15 + + + 15 + + + 15 + + + + + ... + + + + :/images/back.png:/images/back.png + + + + 52 + 52 + + + + + + + + 系统设置 + + + Qt::AlignCenter + + + + + + + ... + + + + :/images/home.png:/images/home.png + + + + 52 + 52 + + + + + + + + + + + + 12 + + + + QFrame::StyledPanel + + + Qt::ScrollBarAlwaysOn + + + Qt::ScrollBarAlwaysOff + + + + + 0 + 0 + 958 + 487 + + + + + + 80 + 20 + 600 + 160 + + + + + 9 + + + + 基本设置 + + + + 0 + + + 0 + + + 20 + + + 0 + + + 0 + + + + + + 0 + 0 + + + + + 0 + 50 + + + + 日志保存路径 + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + 20 + + + + + + + + 0 + 50 + + + + + + + + 识别方式 + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + 20 + + + + + + + + 0 + 0 + + + + + 200 + 50 + + + + + + + + + + + + + QDialogButtonBox::Ok + + + + - + + + diff --git a/StartupForm.cpp b/StartupForm.cpp index ab80e21..605e1ba 100644 --- a/StartupForm.cpp +++ b/StartupForm.cpp @@ -1,4 +1,4 @@ -#include "StartupForm.h" +#include "StartupForm.h" #include "ui_StartupForm.h" StartupForm::StartupForm(QWidget *parent) : @@ -94,13 +94,20 @@ if (hasFace == true) { //LOG(INFO) << QString("检测到人脸,START RECOGNIZE 线程").toStdString(); - LOG_INFO(QString("检测到人脸,START RECOGNIZE 线程").toStdString()); + LOG_INFO(QString("检测到人脸 START RECOGNIZE 线程").toStdString()); ProMemory::getInstance().appState = CasicBioRecConst::ApplicationState::STATE_WORKING; // 启动识别线程 // 槽函数 CasicBioRecWin::switchToRecognizeForm emit startRecognize(); + // 到最大识别时间仍未识别成功则返回失败 + QTimer::singleShot(SettingConfig::getInstance().MAX_MATCH_TIME, this, [=](){ + if (ProMemory::getInstance().widgeFrame == CasicBioRecConst::WidgeFrameName::MAIN_PAGE) { + emit recognizeTimeout(); + } + }); + // 退出 return ; } diff --git a/StartupForm.h b/StartupForm.h index fc79be0..e00880f 100644 --- a/StartupForm.h +++ b/StartupForm.h @@ -1,4 +1,4 @@ -#ifndef STARTUPFORM_H +#ifndef STARTUPFORM_H #define STARTUPFORM_H #include @@ -35,6 +35,7 @@ void switchToSettingForm(); void startRecognize(); + void recognizeTimeout(); }; #endif // STARTUPFORM_H diff --git a/images/add_bottom.png b/images/add_bottom.png new file mode 100644 index 0000000..2f8c0f2 --- /dev/null +++ b/images/add_bottom.png Binary files differ diff --git a/images/add_top.png b/images/add_top.png new file mode 100644 index 0000000..a5ceb4f --- /dev/null +++ b/images/add_top.png Binary files differ diff --git a/main.cpp b/main.cpp index f48b918..049a403 100644 --- a/main.cpp +++ b/main.cpp @@ -4,8 +4,6 @@ #include //闪退调试 #include //闪退调试 -//INITIALIZE_EASYLOGGINGPP // 初始化easylogging++组件库 - //程式异常捕获 LONG ApplicationCrashHandler(EXCEPTION_POINTERS *pException) @@ -36,16 +34,6 @@ //设置异常拦截 SetUnhandledExceptionFilter((LPTOP_LEVEL_EXCEPTION_FILTER)ApplicationCrashHandler);//注冊异常捕获函数 - // Load conf setting - //el::Configurations conf(QApplication::applicationDirPath().toStdString() + "/conf/log.conf"); - //el::Loggers::reconfigureAllLoggers(conf); - - // Fatal level do not stop program - //el::Loggers::addFlag(el::LoggingFlag::DisableApplicationAbortOnFatalLog); - - // Init Verbose level - //el::Loggers::setVerboseLevel(9); - CasicBioRecWin w; w.show(); return a.exec(); diff --git a/qss/setting.css b/qss/setting.css new file mode 100644 index 0000000..d35d998 --- /dev/null +++ b/qss/setting.css @@ -0,0 +1,125 @@ +QLabel { + color: #6868A6; + font-family: "Microsoft YaHei"; +} + +QLabel#labSettingTitle { + font-size: 52px; + color: #FFFFFF; +} + +QWidget#widgetTitle { + background: #6868A6; +} + +QToolButton { + font-size: 48px; + background: transparent; + border-style: none; +} + +QLineEdit#inputName { + background: #6868A6; + border-radius: 8px; + font-family: "Microsoft YaHei"; + font-size: 28px; + padding: 6px; + color: #BEBEC8; + margin-right: 20px; +} + +QComboBox { + background: #6868A6; + border-radius: 8px; + font-family: "Microsoft YaHei"; + font-size: 28px; + padding: 6px; + color: #BEBEC8; +} + +QComboBox::down-arrow { + image: url(":/images/downArrow.png"); +} + +QComboBox::down-arrow::on { + image: url(":/images/upArrow.png"); +} + +QComboBox::drop-down { + subcontrol-origin: padding; + subcontrol-position: top right; + width: 20px; + border: 0px; + padding-right: 15px; +} + +QComboBox QAbstractItemView { + color: #6868A6; + background-color: #E1E1ED; + selection-background-color: #A4A4CA; + selection-color: #FFFFFF; + font-family: "Microsoft YaHei"; +} + +QComboBox QScrollBar::vertical { + width: 20px; + background: #FFFFFF; + border: none; + border-radius: 10px; +} + +QComboBox QScrollBar::handle::vertical { + width: 20px; + background: #6868A6; + border: none; + border-radius: 5px; +} + +QComboBox QScrollBar::add-line::vertical { + border: none; +} +QComboBox QScrollBar::sub-line::vertical { + border: none; +} + +QWidget#widgetPageBtn { + background: #6868A6; + border-radius: 6px; +} + +QLabel#labCurrPage, QLabel#label { + font-size: 24px; +} + +QPushButton#btnRegist { + background: #6868A6; + border-radius: 6px; + color: #FFFFFF; + font-family: "Microsoft YaHei"; + font-size: 28px; + height: 50px; + width: 200px; +} + + +QPushButton[class="btnDelete"] { + color: #FFFFFF; + font-size: 24px; + font-family: "Microsoft YaHei"; + background: #E74C3C; + /*border: 2px solid #FF0000;*/ + border-radius: 8px; + margin: 5px; +} + +/* CounterSettingForm */ +QDialogButtonBox { + height: 40px; +} +QDialogButtonBox QPushButton { + min-height: 32px; + min-width: 150px; + color: #FFFFFF; + font-size: 16px; + font-family: "Microsoft Yahei"; +} diff --git a/CasicBioRecNew.pro b/CasicBioRecNew.pro index d4db4e2..a6059d8 100644 --- a/CasicBioRecNew.pro +++ b/CasicBioRecNew.pro @@ -52,12 +52,12 @@ FORMS += RecognizeResultForm.ui DISTFILES += conf/config.ini -DISTFILES += conf/log.conf DISTFILES += qss/startup.css DISTFILES += qss/personList.css DISTFILES += qss/addPerson.css DISTFILES += qss/dialogTips.css DISTFILES += qss/recognize.css +DISTFILES += qss/setting.css RESOURCES += resource.qrc diff --git a/CasicBioRecWin.cpp b/CasicBioRecWin.cpp index bf6ffe3..c391575 100644 --- a/CasicBioRecWin.cpp +++ b/CasicBioRecWin.cpp @@ -1,4 +1,4 @@ -#include "CasicBioRecWin.h" +#include "CasicBioRecWin.h" #include "ui_CasicBioRecWin.h" CasicBioRecWin::CasicBioRecWin(QWidget *parent) @@ -17,8 +17,7 @@ // 设置窗口透明和大小、位置 this->setWindowFlags(Qt::FramelessWindowHint); this->move(0, 0); - this->resize(SettingConfig::getInstance().WINDOW_WIDTH, - SettingConfig::getInstance().WINDOW_HEIGHT); + this->resize(SettingConfig::getInstance().WINDOW_WIDTH, SettingConfig::getInstance().WINDOW_HEIGHT); // 通过调色板的颜色来设置窗口的统一背景色 qApp->setPalette(QPalette(QColor(SettingConfig::getInstance().WINDOW_BACKGROUND_COLOR))); @@ -100,8 +99,6 @@ { switch (event->key()) { case Qt::Key_Escape: - //LOG(INFO) << "" << std::endl; - LOG_INFO(" \n\r"); QTimer::singleShot(100, qApp, SLOT(quit())); default: @@ -123,6 +120,7 @@ } void CasicBioRecWin::switchToSettingForm() { + ui->stacked->setCurrentWidget(settingForm); ProMemory::getInstance().widgeFrame = CasicBioRecConst::WidgeFrameName::SETTING_FORM; } void CasicBioRecWin::switchToRegistForm(QString personId) @@ -175,6 +173,7 @@ this, &CasicBioRecWin::switchToSettingForm); connect(startForm, &StartupForm::startRecognize, this, &CasicBioRecWin::switchToRecognizeForm); + connect(startForm, &StartupForm::recognizeTimeout, recogResultForm, &RecognizeResultForm::showRecogFailure); connect(personListForm, &PersonListForm::switchToRegistForm, this, &CasicBioRecWin::switchToRegistForm); @@ -188,6 +187,9 @@ connect(recogResultForm, &RecognizeResultForm::backToHomeAndWait, this, &CasicBioRecWin::backToStandByForm); + + connect(settingForm, &SettingForm::backToHomePage, + this, &CasicBioRecWin::backToStandByForm); } void CasicBioRecWin::initCacheData() diff --git a/SettingForm.cpp b/SettingForm.cpp index 149e4d8..4772df3 100644 --- a/SettingForm.cpp +++ b/SettingForm.cpp @@ -1,14 +1,62 @@ -#include "SettingForm.h" +#include "SettingForm.h" #include "ui_SettingForm.h" +#pragma execution_character_set("utf-8") + SettingForm::SettingForm(QWidget *parent) : QWidget(parent), ui(new Ui::SettingForm) { ui->setupUi(this); + + // 加载css文件设置控件样式 + QFile file(QApplication::applicationDirPath() + "/qss/setting.css"); + if (file.open(QFile::ReadOnly)) + { + QString qssStr = QLatin1String(file.readAll()); + this->setStyleSheet(qssStr); + file.close(); + } + + ui->scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn); + ui->scrollContents->setMinimumWidth(SettingConfig::getInstance().WINDOW_WIDTH); + ui->basicBox->setMinimumWidth(SettingConfig::getInstance().WINDOW_WIDTH - 140); + ui->btnSetDialog->button(QDialogButtonBox::Ok)->setText("确定"); + + this->initDefaultSetting(); } SettingForm::~SettingForm() { delete ui; } + +void SettingForm::initDefaultSetting() +{ + ui->iptLogPath->setText(SettingConfig::getInstance().LOG_FILE); + ui->iptLogPath->setReadOnly(true); + + ui->selectRecogMod->addItem(QString("人脸识别"), 1); + ui->selectRecogMod->addItem(QString("虹膜识别"), 2); + ui->selectRecogMod->addItem(QString("双认证"), 3); + ui->selectRecogMod->addItem(QString("任意认证"), 4); + ui->selectRecogMod->setCurrentIndex(SettingConfig::getInstance().RECOG_TYPE - 1); +} + +void SettingForm::on_btnBack_clicked() +{ + emit backToHomePage(); +} + +void SettingForm::on_btnHome_clicked() +{ + emit backToHomePage(); +} + +void SettingForm::on_btnSetDialog_accepted() +{ + SettingConfig::getInstance().RECOG_TYPE = ui->selectRecogMod->currentIndex() + 1; + SettingConfig::getInstance().setProperty("recognize", "recogType", QString::number(ui->selectRecogMod->currentIndex() + 1)); + + emit backToHomePage(); +} diff --git a/SettingForm.h b/SettingForm.h index 9a8eafa..e05391d 100644 --- a/SettingForm.h +++ b/SettingForm.h @@ -1,7 +1,11 @@ -#ifndef SETTINGFORM_H +#ifndef SETTINGFORM_H #define SETTINGFORM_H #include +#include +#include +#include +#include "utils/UtilInclude.h" namespace Ui { class SettingForm; @@ -15,8 +19,20 @@ explicit SettingForm(QWidget *parent = nullptr); ~SettingForm(); +private slots: + void on_btnBack_clicked(); + + void on_btnHome_clicked(); + + void on_btnSetDialog_accepted(); + private: Ui::SettingForm *ui; + + void initDefaultSetting(); + +signals: + void backToHomePage(); }; #endif // SETTINGFORM_H diff --git a/SettingForm.ui b/SettingForm.ui index 7816547..bc8c12e 100644 --- a/SettingForm.ui +++ b/SettingForm.ui @@ -1,21 +1,243 @@ + - - - SettingForm 0 0 - 400 - 300 + 960 + 600 Form + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + 0 + + + + + 0 + + + 15 + + + 15 + + + 15 + + + 15 + + + + + ... + + + + :/images/back.png:/images/back.png + + + + 52 + 52 + + + + + + + + 系统设置 + + + Qt::AlignCenter + + + + + + + ... + + + + :/images/home.png:/images/home.png + + + + 52 + 52 + + + + + + + + + + + + 12 + + + + QFrame::StyledPanel + + + Qt::ScrollBarAlwaysOn + + + Qt::ScrollBarAlwaysOff + + + + + 0 + 0 + 958 + 487 + + + + + + 80 + 20 + 600 + 160 + + + + + 9 + + + + 基本设置 + + + + 0 + + + 0 + + + 20 + + + 0 + + + 0 + + + + + + 0 + 0 + + + + + 0 + 50 + + + + 日志保存路径 + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + 20 + + + + + + + + 0 + 50 + + + + + + + + 识别方式 + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + 20 + + + + + + + + 0 + 0 + + + + + 200 + 50 + + + + + + + + + + + + + QDialogButtonBox::Ok + + + + - + + + diff --git a/StartupForm.cpp b/StartupForm.cpp index ab80e21..605e1ba 100644 --- a/StartupForm.cpp +++ b/StartupForm.cpp @@ -1,4 +1,4 @@ -#include "StartupForm.h" +#include "StartupForm.h" #include "ui_StartupForm.h" StartupForm::StartupForm(QWidget *parent) : @@ -94,13 +94,20 @@ if (hasFace == true) { //LOG(INFO) << QString("检测到人脸,START RECOGNIZE 线程").toStdString(); - LOG_INFO(QString("检测到人脸,START RECOGNIZE 线程").toStdString()); + LOG_INFO(QString("检测到人脸 START RECOGNIZE 线程").toStdString()); ProMemory::getInstance().appState = CasicBioRecConst::ApplicationState::STATE_WORKING; // 启动识别线程 // 槽函数 CasicBioRecWin::switchToRecognizeForm emit startRecognize(); + // 到最大识别时间仍未识别成功则返回失败 + QTimer::singleShot(SettingConfig::getInstance().MAX_MATCH_TIME, this, [=](){ + if (ProMemory::getInstance().widgeFrame == CasicBioRecConst::WidgeFrameName::MAIN_PAGE) { + emit recognizeTimeout(); + } + }); + // 退出 return ; } diff --git a/StartupForm.h b/StartupForm.h index fc79be0..e00880f 100644 --- a/StartupForm.h +++ b/StartupForm.h @@ -1,4 +1,4 @@ -#ifndef STARTUPFORM_H +#ifndef STARTUPFORM_H #define STARTUPFORM_H #include @@ -35,6 +35,7 @@ void switchToSettingForm(); void startRecognize(); + void recognizeTimeout(); }; #endif // STARTUPFORM_H diff --git a/images/add_bottom.png b/images/add_bottom.png new file mode 100644 index 0000000..2f8c0f2 --- /dev/null +++ b/images/add_bottom.png Binary files differ diff --git a/images/add_top.png b/images/add_top.png new file mode 100644 index 0000000..a5ceb4f --- /dev/null +++ b/images/add_top.png Binary files differ diff --git a/main.cpp b/main.cpp index f48b918..049a403 100644 --- a/main.cpp +++ b/main.cpp @@ -4,8 +4,6 @@ #include //闪退调试 #include //闪退调试 -//INITIALIZE_EASYLOGGINGPP // 初始化easylogging++组件库 - //程式异常捕获 LONG ApplicationCrashHandler(EXCEPTION_POINTERS *pException) @@ -36,16 +34,6 @@ //设置异常拦截 SetUnhandledExceptionFilter((LPTOP_LEVEL_EXCEPTION_FILTER)ApplicationCrashHandler);//注冊异常捕获函数 - // Load conf setting - //el::Configurations conf(QApplication::applicationDirPath().toStdString() + "/conf/log.conf"); - //el::Loggers::reconfigureAllLoggers(conf); - - // Fatal level do not stop program - //el::Loggers::addFlag(el::LoggingFlag::DisableApplicationAbortOnFatalLog); - - // Init Verbose level - //el::Loggers::setVerboseLevel(9); - CasicBioRecWin w; w.show(); return a.exec(); diff --git a/qss/setting.css b/qss/setting.css new file mode 100644 index 0000000..d35d998 --- /dev/null +++ b/qss/setting.css @@ -0,0 +1,125 @@ +QLabel { + color: #6868A6; + font-family: "Microsoft YaHei"; +} + +QLabel#labSettingTitle { + font-size: 52px; + color: #FFFFFF; +} + +QWidget#widgetTitle { + background: #6868A6; +} + +QToolButton { + font-size: 48px; + background: transparent; + border-style: none; +} + +QLineEdit#inputName { + background: #6868A6; + border-radius: 8px; + font-family: "Microsoft YaHei"; + font-size: 28px; + padding: 6px; + color: #BEBEC8; + margin-right: 20px; +} + +QComboBox { + background: #6868A6; + border-radius: 8px; + font-family: "Microsoft YaHei"; + font-size: 28px; + padding: 6px; + color: #BEBEC8; +} + +QComboBox::down-arrow { + image: url(":/images/downArrow.png"); +} + +QComboBox::down-arrow::on { + image: url(":/images/upArrow.png"); +} + +QComboBox::drop-down { + subcontrol-origin: padding; + subcontrol-position: top right; + width: 20px; + border: 0px; + padding-right: 15px; +} + +QComboBox QAbstractItemView { + color: #6868A6; + background-color: #E1E1ED; + selection-background-color: #A4A4CA; + selection-color: #FFFFFF; + font-family: "Microsoft YaHei"; +} + +QComboBox QScrollBar::vertical { + width: 20px; + background: #FFFFFF; + border: none; + border-radius: 10px; +} + +QComboBox QScrollBar::handle::vertical { + width: 20px; + background: #6868A6; + border: none; + border-radius: 5px; +} + +QComboBox QScrollBar::add-line::vertical { + border: none; +} +QComboBox QScrollBar::sub-line::vertical { + border: none; +} + +QWidget#widgetPageBtn { + background: #6868A6; + border-radius: 6px; +} + +QLabel#labCurrPage, QLabel#label { + font-size: 24px; +} + +QPushButton#btnRegist { + background: #6868A6; + border-radius: 6px; + color: #FFFFFF; + font-family: "Microsoft YaHei"; + font-size: 28px; + height: 50px; + width: 200px; +} + + +QPushButton[class="btnDelete"] { + color: #FFFFFF; + font-size: 24px; + font-family: "Microsoft YaHei"; + background: #E74C3C; + /*border: 2px solid #FF0000;*/ + border-radius: 8px; + margin: 5px; +} + +/* CounterSettingForm */ +QDialogButtonBox { + height: 40px; +} +QDialogButtonBox QPushButton { + min-height: 32px; + min-width: 150px; + color: #FFFFFF; + font-size: 16px; + font-family: "Microsoft Yahei"; +} diff --git a/resource.qrc b/resource.qrc index e0d4237..62f0bfd 100644 --- a/resource.qrc +++ b/resource.qrc @@ -25,4 +25,8 @@ images/bg_recognize_result.png images/iconRetry.png + + images/add_bottom.png + images/add_top.png + diff --git a/CasicBioRecNew.pro b/CasicBioRecNew.pro index d4db4e2..a6059d8 100644 --- a/CasicBioRecNew.pro +++ b/CasicBioRecNew.pro @@ -52,12 +52,12 @@ FORMS += RecognizeResultForm.ui DISTFILES += conf/config.ini -DISTFILES += conf/log.conf DISTFILES += qss/startup.css DISTFILES += qss/personList.css DISTFILES += qss/addPerson.css DISTFILES += qss/dialogTips.css DISTFILES += qss/recognize.css +DISTFILES += qss/setting.css RESOURCES += resource.qrc diff --git a/CasicBioRecWin.cpp b/CasicBioRecWin.cpp index bf6ffe3..c391575 100644 --- a/CasicBioRecWin.cpp +++ b/CasicBioRecWin.cpp @@ -1,4 +1,4 @@ -#include "CasicBioRecWin.h" +#include "CasicBioRecWin.h" #include "ui_CasicBioRecWin.h" CasicBioRecWin::CasicBioRecWin(QWidget *parent) @@ -17,8 +17,7 @@ // 设置窗口透明和大小、位置 this->setWindowFlags(Qt::FramelessWindowHint); this->move(0, 0); - this->resize(SettingConfig::getInstance().WINDOW_WIDTH, - SettingConfig::getInstance().WINDOW_HEIGHT); + this->resize(SettingConfig::getInstance().WINDOW_WIDTH, SettingConfig::getInstance().WINDOW_HEIGHT); // 通过调色板的颜色来设置窗口的统一背景色 qApp->setPalette(QPalette(QColor(SettingConfig::getInstance().WINDOW_BACKGROUND_COLOR))); @@ -100,8 +99,6 @@ { switch (event->key()) { case Qt::Key_Escape: - //LOG(INFO) << "" << std::endl; - LOG_INFO(" \n\r"); QTimer::singleShot(100, qApp, SLOT(quit())); default: @@ -123,6 +120,7 @@ } void CasicBioRecWin::switchToSettingForm() { + ui->stacked->setCurrentWidget(settingForm); ProMemory::getInstance().widgeFrame = CasicBioRecConst::WidgeFrameName::SETTING_FORM; } void CasicBioRecWin::switchToRegistForm(QString personId) @@ -175,6 +173,7 @@ this, &CasicBioRecWin::switchToSettingForm); connect(startForm, &StartupForm::startRecognize, this, &CasicBioRecWin::switchToRecognizeForm); + connect(startForm, &StartupForm::recognizeTimeout, recogResultForm, &RecognizeResultForm::showRecogFailure); connect(personListForm, &PersonListForm::switchToRegistForm, this, &CasicBioRecWin::switchToRegistForm); @@ -188,6 +187,9 @@ connect(recogResultForm, &RecognizeResultForm::backToHomeAndWait, this, &CasicBioRecWin::backToStandByForm); + + connect(settingForm, &SettingForm::backToHomePage, + this, &CasicBioRecWin::backToStandByForm); } void CasicBioRecWin::initCacheData() diff --git a/SettingForm.cpp b/SettingForm.cpp index 149e4d8..4772df3 100644 --- a/SettingForm.cpp +++ b/SettingForm.cpp @@ -1,14 +1,62 @@ -#include "SettingForm.h" +#include "SettingForm.h" #include "ui_SettingForm.h" +#pragma execution_character_set("utf-8") + SettingForm::SettingForm(QWidget *parent) : QWidget(parent), ui(new Ui::SettingForm) { ui->setupUi(this); + + // 加载css文件设置控件样式 + QFile file(QApplication::applicationDirPath() + "/qss/setting.css"); + if (file.open(QFile::ReadOnly)) + { + QString qssStr = QLatin1String(file.readAll()); + this->setStyleSheet(qssStr); + file.close(); + } + + ui->scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn); + ui->scrollContents->setMinimumWidth(SettingConfig::getInstance().WINDOW_WIDTH); + ui->basicBox->setMinimumWidth(SettingConfig::getInstance().WINDOW_WIDTH - 140); + ui->btnSetDialog->button(QDialogButtonBox::Ok)->setText("确定"); + + this->initDefaultSetting(); } SettingForm::~SettingForm() { delete ui; } + +void SettingForm::initDefaultSetting() +{ + ui->iptLogPath->setText(SettingConfig::getInstance().LOG_FILE); + ui->iptLogPath->setReadOnly(true); + + ui->selectRecogMod->addItem(QString("人脸识别"), 1); + ui->selectRecogMod->addItem(QString("虹膜识别"), 2); + ui->selectRecogMod->addItem(QString("双认证"), 3); + ui->selectRecogMod->addItem(QString("任意认证"), 4); + ui->selectRecogMod->setCurrentIndex(SettingConfig::getInstance().RECOG_TYPE - 1); +} + +void SettingForm::on_btnBack_clicked() +{ + emit backToHomePage(); +} + +void SettingForm::on_btnHome_clicked() +{ + emit backToHomePage(); +} + +void SettingForm::on_btnSetDialog_accepted() +{ + SettingConfig::getInstance().RECOG_TYPE = ui->selectRecogMod->currentIndex() + 1; + SettingConfig::getInstance().setProperty("recognize", "recogType", QString::number(ui->selectRecogMod->currentIndex() + 1)); + + emit backToHomePage(); +} diff --git a/SettingForm.h b/SettingForm.h index 9a8eafa..e05391d 100644 --- a/SettingForm.h +++ b/SettingForm.h @@ -1,7 +1,11 @@ -#ifndef SETTINGFORM_H +#ifndef SETTINGFORM_H #define SETTINGFORM_H #include +#include +#include +#include +#include "utils/UtilInclude.h" namespace Ui { class SettingForm; @@ -15,8 +19,20 @@ explicit SettingForm(QWidget *parent = nullptr); ~SettingForm(); +private slots: + void on_btnBack_clicked(); + + void on_btnHome_clicked(); + + void on_btnSetDialog_accepted(); + private: Ui::SettingForm *ui; + + void initDefaultSetting(); + +signals: + void backToHomePage(); }; #endif // SETTINGFORM_H diff --git a/SettingForm.ui b/SettingForm.ui index 7816547..bc8c12e 100644 --- a/SettingForm.ui +++ b/SettingForm.ui @@ -1,21 +1,243 @@ + - - - SettingForm 0 0 - 400 - 300 + 960 + 600 Form + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + 0 + + + + + 0 + + + 15 + + + 15 + + + 15 + + + 15 + + + + + ... + + + + :/images/back.png:/images/back.png + + + + 52 + 52 + + + + + + + + 系统设置 + + + Qt::AlignCenter + + + + + + + ... + + + + :/images/home.png:/images/home.png + + + + 52 + 52 + + + + + + + + + + + + 12 + + + + QFrame::StyledPanel + + + Qt::ScrollBarAlwaysOn + + + Qt::ScrollBarAlwaysOff + + + + + 0 + 0 + 958 + 487 + + + + + + 80 + 20 + 600 + 160 + + + + + 9 + + + + 基本设置 + + + + 0 + + + 0 + + + 20 + + + 0 + + + 0 + + + + + + 0 + 0 + + + + + 0 + 50 + + + + 日志保存路径 + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + 20 + + + + + + + + 0 + 50 + + + + + + + + 识别方式 + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + 20 + + + + + + + + 0 + 0 + + + + + 200 + 50 + + + + + + + + + + + + + QDialogButtonBox::Ok + + + + - + + + diff --git a/StartupForm.cpp b/StartupForm.cpp index ab80e21..605e1ba 100644 --- a/StartupForm.cpp +++ b/StartupForm.cpp @@ -1,4 +1,4 @@ -#include "StartupForm.h" +#include "StartupForm.h" #include "ui_StartupForm.h" StartupForm::StartupForm(QWidget *parent) : @@ -94,13 +94,20 @@ if (hasFace == true) { //LOG(INFO) << QString("检测到人脸,START RECOGNIZE 线程").toStdString(); - LOG_INFO(QString("检测到人脸,START RECOGNIZE 线程").toStdString()); + LOG_INFO(QString("检测到人脸 START RECOGNIZE 线程").toStdString()); ProMemory::getInstance().appState = CasicBioRecConst::ApplicationState::STATE_WORKING; // 启动识别线程 // 槽函数 CasicBioRecWin::switchToRecognizeForm emit startRecognize(); + // 到最大识别时间仍未识别成功则返回失败 + QTimer::singleShot(SettingConfig::getInstance().MAX_MATCH_TIME, this, [=](){ + if (ProMemory::getInstance().widgeFrame == CasicBioRecConst::WidgeFrameName::MAIN_PAGE) { + emit recognizeTimeout(); + } + }); + // 退出 return ; } diff --git a/StartupForm.h b/StartupForm.h index fc79be0..e00880f 100644 --- a/StartupForm.h +++ b/StartupForm.h @@ -1,4 +1,4 @@ -#ifndef STARTUPFORM_H +#ifndef STARTUPFORM_H #define STARTUPFORM_H #include @@ -35,6 +35,7 @@ void switchToSettingForm(); void startRecognize(); + void recognizeTimeout(); }; #endif // STARTUPFORM_H diff --git a/images/add_bottom.png b/images/add_bottom.png new file mode 100644 index 0000000..2f8c0f2 --- /dev/null +++ b/images/add_bottom.png Binary files differ diff --git a/images/add_top.png b/images/add_top.png new file mode 100644 index 0000000..a5ceb4f --- /dev/null +++ b/images/add_top.png Binary files differ diff --git a/main.cpp b/main.cpp index f48b918..049a403 100644 --- a/main.cpp +++ b/main.cpp @@ -4,8 +4,6 @@ #include //闪退调试 #include //闪退调试 -//INITIALIZE_EASYLOGGINGPP // 初始化easylogging++组件库 - //程式异常捕获 LONG ApplicationCrashHandler(EXCEPTION_POINTERS *pException) @@ -36,16 +34,6 @@ //设置异常拦截 SetUnhandledExceptionFilter((LPTOP_LEVEL_EXCEPTION_FILTER)ApplicationCrashHandler);//注冊异常捕获函数 - // Load conf setting - //el::Configurations conf(QApplication::applicationDirPath().toStdString() + "/conf/log.conf"); - //el::Loggers::reconfigureAllLoggers(conf); - - // Fatal level do not stop program - //el::Loggers::addFlag(el::LoggingFlag::DisableApplicationAbortOnFatalLog); - - // Init Verbose level - //el::Loggers::setVerboseLevel(9); - CasicBioRecWin w; w.show(); return a.exec(); diff --git a/qss/setting.css b/qss/setting.css new file mode 100644 index 0000000..d35d998 --- /dev/null +++ b/qss/setting.css @@ -0,0 +1,125 @@ +QLabel { + color: #6868A6; + font-family: "Microsoft YaHei"; +} + +QLabel#labSettingTitle { + font-size: 52px; + color: #FFFFFF; +} + +QWidget#widgetTitle { + background: #6868A6; +} + +QToolButton { + font-size: 48px; + background: transparent; + border-style: none; +} + +QLineEdit#inputName { + background: #6868A6; + border-radius: 8px; + font-family: "Microsoft YaHei"; + font-size: 28px; + padding: 6px; + color: #BEBEC8; + margin-right: 20px; +} + +QComboBox { + background: #6868A6; + border-radius: 8px; + font-family: "Microsoft YaHei"; + font-size: 28px; + padding: 6px; + color: #BEBEC8; +} + +QComboBox::down-arrow { + image: url(":/images/downArrow.png"); +} + +QComboBox::down-arrow::on { + image: url(":/images/upArrow.png"); +} + +QComboBox::drop-down { + subcontrol-origin: padding; + subcontrol-position: top right; + width: 20px; + border: 0px; + padding-right: 15px; +} + +QComboBox QAbstractItemView { + color: #6868A6; + background-color: #E1E1ED; + selection-background-color: #A4A4CA; + selection-color: #FFFFFF; + font-family: "Microsoft YaHei"; +} + +QComboBox QScrollBar::vertical { + width: 20px; + background: #FFFFFF; + border: none; + border-radius: 10px; +} + +QComboBox QScrollBar::handle::vertical { + width: 20px; + background: #6868A6; + border: none; + border-radius: 5px; +} + +QComboBox QScrollBar::add-line::vertical { + border: none; +} +QComboBox QScrollBar::sub-line::vertical { + border: none; +} + +QWidget#widgetPageBtn { + background: #6868A6; + border-radius: 6px; +} + +QLabel#labCurrPage, QLabel#label { + font-size: 24px; +} + +QPushButton#btnRegist { + background: #6868A6; + border-radius: 6px; + color: #FFFFFF; + font-family: "Microsoft YaHei"; + font-size: 28px; + height: 50px; + width: 200px; +} + + +QPushButton[class="btnDelete"] { + color: #FFFFFF; + font-size: 24px; + font-family: "Microsoft YaHei"; + background: #E74C3C; + /*border: 2px solid #FF0000;*/ + border-radius: 8px; + margin: 5px; +} + +/* CounterSettingForm */ +QDialogButtonBox { + height: 40px; +} +QDialogButtonBox QPushButton { + min-height: 32px; + min-width: 150px; + color: #FFFFFF; + font-size: 16px; + font-family: "Microsoft Yahei"; +} diff --git a/resource.qrc b/resource.qrc index e0d4237..62f0bfd 100644 --- a/resource.qrc +++ b/resource.qrc @@ -25,4 +25,8 @@ images/bg_recognize_result.png images/iconRetry.png + + images/add_bottom.png + images/add_top.png + diff --git a/utils/SettingConfig.cpp b/utils/SettingConfig.cpp index 4b177fc..73384b0 100644 --- a/utils/SettingConfig.cpp +++ b/utils/SettingConfig.cpp @@ -1,4 +1,4 @@ -#include "SettingConfig.h" +#include "SettingConfig.h" #include SettingConfig::SettingConfig() @@ -6,6 +6,21 @@ filename = QApplication::applicationDirPath() + "/conf/config.ini"; setting = new QSettings(this->filename, QSettings::IniFormat); + init(); +} + + +QVariant SettingConfig::getProperty(QString nodeName, QString keyName) { + QVariant var = this->setting->value(QString("/%1/%2").arg(nodeName).arg(keyName)); + return var; +} + +void SettingConfig::setProperty(QString nodeName, QString keyName, QString value) { + this->setting->setValue(QString("/%1/%2").arg(nodeName).arg(keyName), value); +} + +void SettingConfig::init() +{ WINDOW_WIDTH = getProperty("window", "width").toInt(); WINDOW_HEIGHT = getProperty("window", "height").toInt(); WINDOW_BACKGROUND_COLOR = getProperty("window", "backgroundColor").toString(); @@ -47,9 +62,3 @@ LOG_FILE = getProperty("log", "logFile").toString(); LOG_LEVEL = getProperty("log", "logLevel").toString(); } - - -QVariant SettingConfig::getProperty(QString nodeName, QString keyName) { - QVariant var = this->setting->value(QString("/%1/%2").arg(nodeName).arg(keyName)); - return var; -} diff --git a/CasicBioRecNew.pro b/CasicBioRecNew.pro index d4db4e2..a6059d8 100644 --- a/CasicBioRecNew.pro +++ b/CasicBioRecNew.pro @@ -52,12 +52,12 @@ FORMS += RecognizeResultForm.ui DISTFILES += conf/config.ini -DISTFILES += conf/log.conf DISTFILES += qss/startup.css DISTFILES += qss/personList.css DISTFILES += qss/addPerson.css DISTFILES += qss/dialogTips.css DISTFILES += qss/recognize.css +DISTFILES += qss/setting.css RESOURCES += resource.qrc diff --git a/CasicBioRecWin.cpp b/CasicBioRecWin.cpp index bf6ffe3..c391575 100644 --- a/CasicBioRecWin.cpp +++ b/CasicBioRecWin.cpp @@ -1,4 +1,4 @@ -#include "CasicBioRecWin.h" +#include "CasicBioRecWin.h" #include "ui_CasicBioRecWin.h" CasicBioRecWin::CasicBioRecWin(QWidget *parent) @@ -17,8 +17,7 @@ // 设置窗口透明和大小、位置 this->setWindowFlags(Qt::FramelessWindowHint); this->move(0, 0); - this->resize(SettingConfig::getInstance().WINDOW_WIDTH, - SettingConfig::getInstance().WINDOW_HEIGHT); + this->resize(SettingConfig::getInstance().WINDOW_WIDTH, SettingConfig::getInstance().WINDOW_HEIGHT); // 通过调色板的颜色来设置窗口的统一背景色 qApp->setPalette(QPalette(QColor(SettingConfig::getInstance().WINDOW_BACKGROUND_COLOR))); @@ -100,8 +99,6 @@ { switch (event->key()) { case Qt::Key_Escape: - //LOG(INFO) << "" << std::endl; - LOG_INFO(" \n\r"); QTimer::singleShot(100, qApp, SLOT(quit())); default: @@ -123,6 +120,7 @@ } void CasicBioRecWin::switchToSettingForm() { + ui->stacked->setCurrentWidget(settingForm); ProMemory::getInstance().widgeFrame = CasicBioRecConst::WidgeFrameName::SETTING_FORM; } void CasicBioRecWin::switchToRegistForm(QString personId) @@ -175,6 +173,7 @@ this, &CasicBioRecWin::switchToSettingForm); connect(startForm, &StartupForm::startRecognize, this, &CasicBioRecWin::switchToRecognizeForm); + connect(startForm, &StartupForm::recognizeTimeout, recogResultForm, &RecognizeResultForm::showRecogFailure); connect(personListForm, &PersonListForm::switchToRegistForm, this, &CasicBioRecWin::switchToRegistForm); @@ -188,6 +187,9 @@ connect(recogResultForm, &RecognizeResultForm::backToHomeAndWait, this, &CasicBioRecWin::backToStandByForm); + + connect(settingForm, &SettingForm::backToHomePage, + this, &CasicBioRecWin::backToStandByForm); } void CasicBioRecWin::initCacheData() diff --git a/SettingForm.cpp b/SettingForm.cpp index 149e4d8..4772df3 100644 --- a/SettingForm.cpp +++ b/SettingForm.cpp @@ -1,14 +1,62 @@ -#include "SettingForm.h" +#include "SettingForm.h" #include "ui_SettingForm.h" +#pragma execution_character_set("utf-8") + SettingForm::SettingForm(QWidget *parent) : QWidget(parent), ui(new Ui::SettingForm) { ui->setupUi(this); + + // 加载css文件设置控件样式 + QFile file(QApplication::applicationDirPath() + "/qss/setting.css"); + if (file.open(QFile::ReadOnly)) + { + QString qssStr = QLatin1String(file.readAll()); + this->setStyleSheet(qssStr); + file.close(); + } + + ui->scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn); + ui->scrollContents->setMinimumWidth(SettingConfig::getInstance().WINDOW_WIDTH); + ui->basicBox->setMinimumWidth(SettingConfig::getInstance().WINDOW_WIDTH - 140); + ui->btnSetDialog->button(QDialogButtonBox::Ok)->setText("确定"); + + this->initDefaultSetting(); } SettingForm::~SettingForm() { delete ui; } + +void SettingForm::initDefaultSetting() +{ + ui->iptLogPath->setText(SettingConfig::getInstance().LOG_FILE); + ui->iptLogPath->setReadOnly(true); + + ui->selectRecogMod->addItem(QString("人脸识别"), 1); + ui->selectRecogMod->addItem(QString("虹膜识别"), 2); + ui->selectRecogMod->addItem(QString("双认证"), 3); + ui->selectRecogMod->addItem(QString("任意认证"), 4); + ui->selectRecogMod->setCurrentIndex(SettingConfig::getInstance().RECOG_TYPE - 1); +} + +void SettingForm::on_btnBack_clicked() +{ + emit backToHomePage(); +} + +void SettingForm::on_btnHome_clicked() +{ + emit backToHomePage(); +} + +void SettingForm::on_btnSetDialog_accepted() +{ + SettingConfig::getInstance().RECOG_TYPE = ui->selectRecogMod->currentIndex() + 1; + SettingConfig::getInstance().setProperty("recognize", "recogType", QString::number(ui->selectRecogMod->currentIndex() + 1)); + + emit backToHomePage(); +} diff --git a/SettingForm.h b/SettingForm.h index 9a8eafa..e05391d 100644 --- a/SettingForm.h +++ b/SettingForm.h @@ -1,7 +1,11 @@ -#ifndef SETTINGFORM_H +#ifndef SETTINGFORM_H #define SETTINGFORM_H #include +#include +#include +#include +#include "utils/UtilInclude.h" namespace Ui { class SettingForm; @@ -15,8 +19,20 @@ explicit SettingForm(QWidget *parent = nullptr); ~SettingForm(); +private slots: + void on_btnBack_clicked(); + + void on_btnHome_clicked(); + + void on_btnSetDialog_accepted(); + private: Ui::SettingForm *ui; + + void initDefaultSetting(); + +signals: + void backToHomePage(); }; #endif // SETTINGFORM_H diff --git a/SettingForm.ui b/SettingForm.ui index 7816547..bc8c12e 100644 --- a/SettingForm.ui +++ b/SettingForm.ui @@ -1,21 +1,243 @@ + - - - SettingForm 0 0 - 400 - 300 + 960 + 600 Form + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + 0 + + + + + 0 + + + 15 + + + 15 + + + 15 + + + 15 + + + + + ... + + + + :/images/back.png:/images/back.png + + + + 52 + 52 + + + + + + + + 系统设置 + + + Qt::AlignCenter + + + + + + + ... + + + + :/images/home.png:/images/home.png + + + + 52 + 52 + + + + + + + + + + + + 12 + + + + QFrame::StyledPanel + + + Qt::ScrollBarAlwaysOn + + + Qt::ScrollBarAlwaysOff + + + + + 0 + 0 + 958 + 487 + + + + + + 80 + 20 + 600 + 160 + + + + + 9 + + + + 基本设置 + + + + 0 + + + 0 + + + 20 + + + 0 + + + 0 + + + + + + 0 + 0 + + + + + 0 + 50 + + + + 日志保存路径 + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + 20 + + + + + + + + 0 + 50 + + + + + + + + 识别方式 + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + 20 + + + + + + + + 0 + 0 + + + + + 200 + 50 + + + + + + + + + + + + + QDialogButtonBox::Ok + + + + - + + + diff --git a/StartupForm.cpp b/StartupForm.cpp index ab80e21..605e1ba 100644 --- a/StartupForm.cpp +++ b/StartupForm.cpp @@ -1,4 +1,4 @@ -#include "StartupForm.h" +#include "StartupForm.h" #include "ui_StartupForm.h" StartupForm::StartupForm(QWidget *parent) : @@ -94,13 +94,20 @@ if (hasFace == true) { //LOG(INFO) << QString("检测到人脸,START RECOGNIZE 线程").toStdString(); - LOG_INFO(QString("检测到人脸,START RECOGNIZE 线程").toStdString()); + LOG_INFO(QString("检测到人脸 START RECOGNIZE 线程").toStdString()); ProMemory::getInstance().appState = CasicBioRecConst::ApplicationState::STATE_WORKING; // 启动识别线程 // 槽函数 CasicBioRecWin::switchToRecognizeForm emit startRecognize(); + // 到最大识别时间仍未识别成功则返回失败 + QTimer::singleShot(SettingConfig::getInstance().MAX_MATCH_TIME, this, [=](){ + if (ProMemory::getInstance().widgeFrame == CasicBioRecConst::WidgeFrameName::MAIN_PAGE) { + emit recognizeTimeout(); + } + }); + // 退出 return ; } diff --git a/StartupForm.h b/StartupForm.h index fc79be0..e00880f 100644 --- a/StartupForm.h +++ b/StartupForm.h @@ -1,4 +1,4 @@ -#ifndef STARTUPFORM_H +#ifndef STARTUPFORM_H #define STARTUPFORM_H #include @@ -35,6 +35,7 @@ void switchToSettingForm(); void startRecognize(); + void recognizeTimeout(); }; #endif // STARTUPFORM_H diff --git a/images/add_bottom.png b/images/add_bottom.png new file mode 100644 index 0000000..2f8c0f2 --- /dev/null +++ b/images/add_bottom.png Binary files differ diff --git a/images/add_top.png b/images/add_top.png new file mode 100644 index 0000000..a5ceb4f --- /dev/null +++ b/images/add_top.png Binary files differ diff --git a/main.cpp b/main.cpp index f48b918..049a403 100644 --- a/main.cpp +++ b/main.cpp @@ -4,8 +4,6 @@ #include //闪退调试 #include //闪退调试 -//INITIALIZE_EASYLOGGINGPP // 初始化easylogging++组件库 - //程式异常捕获 LONG ApplicationCrashHandler(EXCEPTION_POINTERS *pException) @@ -36,16 +34,6 @@ //设置异常拦截 SetUnhandledExceptionFilter((LPTOP_LEVEL_EXCEPTION_FILTER)ApplicationCrashHandler);//注冊异常捕获函数 - // Load conf setting - //el::Configurations conf(QApplication::applicationDirPath().toStdString() + "/conf/log.conf"); - //el::Loggers::reconfigureAllLoggers(conf); - - // Fatal level do not stop program - //el::Loggers::addFlag(el::LoggingFlag::DisableApplicationAbortOnFatalLog); - - // Init Verbose level - //el::Loggers::setVerboseLevel(9); - CasicBioRecWin w; w.show(); return a.exec(); diff --git a/qss/setting.css b/qss/setting.css new file mode 100644 index 0000000..d35d998 --- /dev/null +++ b/qss/setting.css @@ -0,0 +1,125 @@ +QLabel { + color: #6868A6; + font-family: "Microsoft YaHei"; +} + +QLabel#labSettingTitle { + font-size: 52px; + color: #FFFFFF; +} + +QWidget#widgetTitle { + background: #6868A6; +} + +QToolButton { + font-size: 48px; + background: transparent; + border-style: none; +} + +QLineEdit#inputName { + background: #6868A6; + border-radius: 8px; + font-family: "Microsoft YaHei"; + font-size: 28px; + padding: 6px; + color: #BEBEC8; + margin-right: 20px; +} + +QComboBox { + background: #6868A6; + border-radius: 8px; + font-family: "Microsoft YaHei"; + font-size: 28px; + padding: 6px; + color: #BEBEC8; +} + +QComboBox::down-arrow { + image: url(":/images/downArrow.png"); +} + +QComboBox::down-arrow::on { + image: url(":/images/upArrow.png"); +} + +QComboBox::drop-down { + subcontrol-origin: padding; + subcontrol-position: top right; + width: 20px; + border: 0px; + padding-right: 15px; +} + +QComboBox QAbstractItemView { + color: #6868A6; + background-color: #E1E1ED; + selection-background-color: #A4A4CA; + selection-color: #FFFFFF; + font-family: "Microsoft YaHei"; +} + +QComboBox QScrollBar::vertical { + width: 20px; + background: #FFFFFF; + border: none; + border-radius: 10px; +} + +QComboBox QScrollBar::handle::vertical { + width: 20px; + background: #6868A6; + border: none; + border-radius: 5px; +} + +QComboBox QScrollBar::add-line::vertical { + border: none; +} +QComboBox QScrollBar::sub-line::vertical { + border: none; +} + +QWidget#widgetPageBtn { + background: #6868A6; + border-radius: 6px; +} + +QLabel#labCurrPage, QLabel#label { + font-size: 24px; +} + +QPushButton#btnRegist { + background: #6868A6; + border-radius: 6px; + color: #FFFFFF; + font-family: "Microsoft YaHei"; + font-size: 28px; + height: 50px; + width: 200px; +} + + +QPushButton[class="btnDelete"] { + color: #FFFFFF; + font-size: 24px; + font-family: "Microsoft YaHei"; + background: #E74C3C; + /*border: 2px solid #FF0000;*/ + border-radius: 8px; + margin: 5px; +} + +/* CounterSettingForm */ +QDialogButtonBox { + height: 40px; +} +QDialogButtonBox QPushButton { + min-height: 32px; + min-width: 150px; + color: #FFFFFF; + font-size: 16px; + font-family: "Microsoft Yahei"; +} diff --git a/resource.qrc b/resource.qrc index e0d4237..62f0bfd 100644 --- a/resource.qrc +++ b/resource.qrc @@ -25,4 +25,8 @@ images/bg_recognize_result.png images/iconRetry.png + + images/add_bottom.png + images/add_top.png + diff --git a/utils/SettingConfig.cpp b/utils/SettingConfig.cpp index 4b177fc..73384b0 100644 --- a/utils/SettingConfig.cpp +++ b/utils/SettingConfig.cpp @@ -1,4 +1,4 @@ -#include "SettingConfig.h" +#include "SettingConfig.h" #include SettingConfig::SettingConfig() @@ -6,6 +6,21 @@ filename = QApplication::applicationDirPath() + "/conf/config.ini"; setting = new QSettings(this->filename, QSettings::IniFormat); + init(); +} + + +QVariant SettingConfig::getProperty(QString nodeName, QString keyName) { + QVariant var = this->setting->value(QString("/%1/%2").arg(nodeName).arg(keyName)); + return var; +} + +void SettingConfig::setProperty(QString nodeName, QString keyName, QString value) { + this->setting->setValue(QString("/%1/%2").arg(nodeName).arg(keyName), value); +} + +void SettingConfig::init() +{ WINDOW_WIDTH = getProperty("window", "width").toInt(); WINDOW_HEIGHT = getProperty("window", "height").toInt(); WINDOW_BACKGROUND_COLOR = getProperty("window", "backgroundColor").toString(); @@ -47,9 +62,3 @@ LOG_FILE = getProperty("log", "logFile").toString(); LOG_LEVEL = getProperty("log", "logLevel").toString(); } - - -QVariant SettingConfig::getProperty(QString nodeName, QString keyName) { - QVariant var = this->setting->value(QString("/%1/%2").arg(nodeName).arg(keyName)); - return var; -} diff --git a/utils/SettingConfig.h b/utils/SettingConfig.h index be5bbfe..12785e1 100644 --- a/utils/SettingConfig.h +++ b/utils/SettingConfig.h @@ -1,4 +1,4 @@ -#ifndef SETTINGCONFIG_H +#ifndef SETTINGCONFIG_H #define SETTINGCONFIG_H #include @@ -24,6 +24,8 @@ * @title */ QVariant getProperty(QString nodeName, QString keyName); + void setProperty(QString nodeName, QString keyName, QString value); + void init(); /******** 以下为需要的各类参数 ********/ int WINDOW_WIDTH; diff --git a/CasicBioRecNew.pro b/CasicBioRecNew.pro index d4db4e2..a6059d8 100644 --- a/CasicBioRecNew.pro +++ b/CasicBioRecNew.pro @@ -52,12 +52,12 @@ FORMS += RecognizeResultForm.ui DISTFILES += conf/config.ini -DISTFILES += conf/log.conf DISTFILES += qss/startup.css DISTFILES += qss/personList.css DISTFILES += qss/addPerson.css DISTFILES += qss/dialogTips.css DISTFILES += qss/recognize.css +DISTFILES += qss/setting.css RESOURCES += resource.qrc diff --git a/CasicBioRecWin.cpp b/CasicBioRecWin.cpp index bf6ffe3..c391575 100644 --- a/CasicBioRecWin.cpp +++ b/CasicBioRecWin.cpp @@ -1,4 +1,4 @@ -#include "CasicBioRecWin.h" +#include "CasicBioRecWin.h" #include "ui_CasicBioRecWin.h" CasicBioRecWin::CasicBioRecWin(QWidget *parent) @@ -17,8 +17,7 @@ // 设置窗口透明和大小、位置 this->setWindowFlags(Qt::FramelessWindowHint); this->move(0, 0); - this->resize(SettingConfig::getInstance().WINDOW_WIDTH, - SettingConfig::getInstance().WINDOW_HEIGHT); + this->resize(SettingConfig::getInstance().WINDOW_WIDTH, SettingConfig::getInstance().WINDOW_HEIGHT); // 通过调色板的颜色来设置窗口的统一背景色 qApp->setPalette(QPalette(QColor(SettingConfig::getInstance().WINDOW_BACKGROUND_COLOR))); @@ -100,8 +99,6 @@ { switch (event->key()) { case Qt::Key_Escape: - //LOG(INFO) << "" << std::endl; - LOG_INFO(" \n\r"); QTimer::singleShot(100, qApp, SLOT(quit())); default: @@ -123,6 +120,7 @@ } void CasicBioRecWin::switchToSettingForm() { + ui->stacked->setCurrentWidget(settingForm); ProMemory::getInstance().widgeFrame = CasicBioRecConst::WidgeFrameName::SETTING_FORM; } void CasicBioRecWin::switchToRegistForm(QString personId) @@ -175,6 +173,7 @@ this, &CasicBioRecWin::switchToSettingForm); connect(startForm, &StartupForm::startRecognize, this, &CasicBioRecWin::switchToRecognizeForm); + connect(startForm, &StartupForm::recognizeTimeout, recogResultForm, &RecognizeResultForm::showRecogFailure); connect(personListForm, &PersonListForm::switchToRegistForm, this, &CasicBioRecWin::switchToRegistForm); @@ -188,6 +187,9 @@ connect(recogResultForm, &RecognizeResultForm::backToHomeAndWait, this, &CasicBioRecWin::backToStandByForm); + + connect(settingForm, &SettingForm::backToHomePage, + this, &CasicBioRecWin::backToStandByForm); } void CasicBioRecWin::initCacheData() diff --git a/SettingForm.cpp b/SettingForm.cpp index 149e4d8..4772df3 100644 --- a/SettingForm.cpp +++ b/SettingForm.cpp @@ -1,14 +1,62 @@ -#include "SettingForm.h" +#include "SettingForm.h" #include "ui_SettingForm.h" +#pragma execution_character_set("utf-8") + SettingForm::SettingForm(QWidget *parent) : QWidget(parent), ui(new Ui::SettingForm) { ui->setupUi(this); + + // 加载css文件设置控件样式 + QFile file(QApplication::applicationDirPath() + "/qss/setting.css"); + if (file.open(QFile::ReadOnly)) + { + QString qssStr = QLatin1String(file.readAll()); + this->setStyleSheet(qssStr); + file.close(); + } + + ui->scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn); + ui->scrollContents->setMinimumWidth(SettingConfig::getInstance().WINDOW_WIDTH); + ui->basicBox->setMinimumWidth(SettingConfig::getInstance().WINDOW_WIDTH - 140); + ui->btnSetDialog->button(QDialogButtonBox::Ok)->setText("确定"); + + this->initDefaultSetting(); } SettingForm::~SettingForm() { delete ui; } + +void SettingForm::initDefaultSetting() +{ + ui->iptLogPath->setText(SettingConfig::getInstance().LOG_FILE); + ui->iptLogPath->setReadOnly(true); + + ui->selectRecogMod->addItem(QString("人脸识别"), 1); + ui->selectRecogMod->addItem(QString("虹膜识别"), 2); + ui->selectRecogMod->addItem(QString("双认证"), 3); + ui->selectRecogMod->addItem(QString("任意认证"), 4); + ui->selectRecogMod->setCurrentIndex(SettingConfig::getInstance().RECOG_TYPE - 1); +} + +void SettingForm::on_btnBack_clicked() +{ + emit backToHomePage(); +} + +void SettingForm::on_btnHome_clicked() +{ + emit backToHomePage(); +} + +void SettingForm::on_btnSetDialog_accepted() +{ + SettingConfig::getInstance().RECOG_TYPE = ui->selectRecogMod->currentIndex() + 1; + SettingConfig::getInstance().setProperty("recognize", "recogType", QString::number(ui->selectRecogMod->currentIndex() + 1)); + + emit backToHomePage(); +} diff --git a/SettingForm.h b/SettingForm.h index 9a8eafa..e05391d 100644 --- a/SettingForm.h +++ b/SettingForm.h @@ -1,7 +1,11 @@ -#ifndef SETTINGFORM_H +#ifndef SETTINGFORM_H #define SETTINGFORM_H #include +#include +#include +#include +#include "utils/UtilInclude.h" namespace Ui { class SettingForm; @@ -15,8 +19,20 @@ explicit SettingForm(QWidget *parent = nullptr); ~SettingForm(); +private slots: + void on_btnBack_clicked(); + + void on_btnHome_clicked(); + + void on_btnSetDialog_accepted(); + private: Ui::SettingForm *ui; + + void initDefaultSetting(); + +signals: + void backToHomePage(); }; #endif // SETTINGFORM_H diff --git a/SettingForm.ui b/SettingForm.ui index 7816547..bc8c12e 100644 --- a/SettingForm.ui +++ b/SettingForm.ui @@ -1,21 +1,243 @@ + - - - SettingForm 0 0 - 400 - 300 + 960 + 600 Form + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + 0 + + + + + 0 + + + 15 + + + 15 + + + 15 + + + 15 + + + + + ... + + + + :/images/back.png:/images/back.png + + + + 52 + 52 + + + + + + + + 系统设置 + + + Qt::AlignCenter + + + + + + + ... + + + + :/images/home.png:/images/home.png + + + + 52 + 52 + + + + + + + + + + + + 12 + + + + QFrame::StyledPanel + + + Qt::ScrollBarAlwaysOn + + + Qt::ScrollBarAlwaysOff + + + + + 0 + 0 + 958 + 487 + + + + + + 80 + 20 + 600 + 160 + + + + + 9 + + + + 基本设置 + + + + 0 + + + 0 + + + 20 + + + 0 + + + 0 + + + + + + 0 + 0 + + + + + 0 + 50 + + + + 日志保存路径 + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + 20 + + + + + + + + 0 + 50 + + + + + + + + 识别方式 + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + 20 + + + + + + + + 0 + 0 + + + + + 200 + 50 + + + + + + + + + + + + + QDialogButtonBox::Ok + + + + - + + + diff --git a/StartupForm.cpp b/StartupForm.cpp index ab80e21..605e1ba 100644 --- a/StartupForm.cpp +++ b/StartupForm.cpp @@ -1,4 +1,4 @@ -#include "StartupForm.h" +#include "StartupForm.h" #include "ui_StartupForm.h" StartupForm::StartupForm(QWidget *parent) : @@ -94,13 +94,20 @@ if (hasFace == true) { //LOG(INFO) << QString("检测到人脸,START RECOGNIZE 线程").toStdString(); - LOG_INFO(QString("检测到人脸,START RECOGNIZE 线程").toStdString()); + LOG_INFO(QString("检测到人脸 START RECOGNIZE 线程").toStdString()); ProMemory::getInstance().appState = CasicBioRecConst::ApplicationState::STATE_WORKING; // 启动识别线程 // 槽函数 CasicBioRecWin::switchToRecognizeForm emit startRecognize(); + // 到最大识别时间仍未识别成功则返回失败 + QTimer::singleShot(SettingConfig::getInstance().MAX_MATCH_TIME, this, [=](){ + if (ProMemory::getInstance().widgeFrame == CasicBioRecConst::WidgeFrameName::MAIN_PAGE) { + emit recognizeTimeout(); + } + }); + // 退出 return ; } diff --git a/StartupForm.h b/StartupForm.h index fc79be0..e00880f 100644 --- a/StartupForm.h +++ b/StartupForm.h @@ -1,4 +1,4 @@ -#ifndef STARTUPFORM_H +#ifndef STARTUPFORM_H #define STARTUPFORM_H #include @@ -35,6 +35,7 @@ void switchToSettingForm(); void startRecognize(); + void recognizeTimeout(); }; #endif // STARTUPFORM_H diff --git a/images/add_bottom.png b/images/add_bottom.png new file mode 100644 index 0000000..2f8c0f2 --- /dev/null +++ b/images/add_bottom.png Binary files differ diff --git a/images/add_top.png b/images/add_top.png new file mode 100644 index 0000000..a5ceb4f --- /dev/null +++ b/images/add_top.png Binary files differ diff --git a/main.cpp b/main.cpp index f48b918..049a403 100644 --- a/main.cpp +++ b/main.cpp @@ -4,8 +4,6 @@ #include //闪退调试 #include //闪退调试 -//INITIALIZE_EASYLOGGINGPP // 初始化easylogging++组件库 - //程式异常捕获 LONG ApplicationCrashHandler(EXCEPTION_POINTERS *pException) @@ -36,16 +34,6 @@ //设置异常拦截 SetUnhandledExceptionFilter((LPTOP_LEVEL_EXCEPTION_FILTER)ApplicationCrashHandler);//注冊异常捕获函数 - // Load conf setting - //el::Configurations conf(QApplication::applicationDirPath().toStdString() + "/conf/log.conf"); - //el::Loggers::reconfigureAllLoggers(conf); - - // Fatal level do not stop program - //el::Loggers::addFlag(el::LoggingFlag::DisableApplicationAbortOnFatalLog); - - // Init Verbose level - //el::Loggers::setVerboseLevel(9); - CasicBioRecWin w; w.show(); return a.exec(); diff --git a/qss/setting.css b/qss/setting.css new file mode 100644 index 0000000..d35d998 --- /dev/null +++ b/qss/setting.css @@ -0,0 +1,125 @@ +QLabel { + color: #6868A6; + font-family: "Microsoft YaHei"; +} + +QLabel#labSettingTitle { + font-size: 52px; + color: #FFFFFF; +} + +QWidget#widgetTitle { + background: #6868A6; +} + +QToolButton { + font-size: 48px; + background: transparent; + border-style: none; +} + +QLineEdit#inputName { + background: #6868A6; + border-radius: 8px; + font-family: "Microsoft YaHei"; + font-size: 28px; + padding: 6px; + color: #BEBEC8; + margin-right: 20px; +} + +QComboBox { + background: #6868A6; + border-radius: 8px; + font-family: "Microsoft YaHei"; + font-size: 28px; + padding: 6px; + color: #BEBEC8; +} + +QComboBox::down-arrow { + image: url(":/images/downArrow.png"); +} + +QComboBox::down-arrow::on { + image: url(":/images/upArrow.png"); +} + +QComboBox::drop-down { + subcontrol-origin: padding; + subcontrol-position: top right; + width: 20px; + border: 0px; + padding-right: 15px; +} + +QComboBox QAbstractItemView { + color: #6868A6; + background-color: #E1E1ED; + selection-background-color: #A4A4CA; + selection-color: #FFFFFF; + font-family: "Microsoft YaHei"; +} + +QComboBox QScrollBar::vertical { + width: 20px; + background: #FFFFFF; + border: none; + border-radius: 10px; +} + +QComboBox QScrollBar::handle::vertical { + width: 20px; + background: #6868A6; + border: none; + border-radius: 5px; +} + +QComboBox QScrollBar::add-line::vertical { + border: none; +} +QComboBox QScrollBar::sub-line::vertical { + border: none; +} + +QWidget#widgetPageBtn { + background: #6868A6; + border-radius: 6px; +} + +QLabel#labCurrPage, QLabel#label { + font-size: 24px; +} + +QPushButton#btnRegist { + background: #6868A6; + border-radius: 6px; + color: #FFFFFF; + font-family: "Microsoft YaHei"; + font-size: 28px; + height: 50px; + width: 200px; +} + + +QPushButton[class="btnDelete"] { + color: #FFFFFF; + font-size: 24px; + font-family: "Microsoft YaHei"; + background: #E74C3C; + /*border: 2px solid #FF0000;*/ + border-radius: 8px; + margin: 5px; +} + +/* CounterSettingForm */ +QDialogButtonBox { + height: 40px; +} +QDialogButtonBox QPushButton { + min-height: 32px; + min-width: 150px; + color: #FFFFFF; + font-size: 16px; + font-family: "Microsoft Yahei"; +} diff --git a/resource.qrc b/resource.qrc index e0d4237..62f0bfd 100644 --- a/resource.qrc +++ b/resource.qrc @@ -25,4 +25,8 @@ images/bg_recognize_result.png images/iconRetry.png + + images/add_bottom.png + images/add_top.png + diff --git a/utils/SettingConfig.cpp b/utils/SettingConfig.cpp index 4b177fc..73384b0 100644 --- a/utils/SettingConfig.cpp +++ b/utils/SettingConfig.cpp @@ -1,4 +1,4 @@ -#include "SettingConfig.h" +#include "SettingConfig.h" #include SettingConfig::SettingConfig() @@ -6,6 +6,21 @@ filename = QApplication::applicationDirPath() + "/conf/config.ini"; setting = new QSettings(this->filename, QSettings::IniFormat); + init(); +} + + +QVariant SettingConfig::getProperty(QString nodeName, QString keyName) { + QVariant var = this->setting->value(QString("/%1/%2").arg(nodeName).arg(keyName)); + return var; +} + +void SettingConfig::setProperty(QString nodeName, QString keyName, QString value) { + this->setting->setValue(QString("/%1/%2").arg(nodeName).arg(keyName), value); +} + +void SettingConfig::init() +{ WINDOW_WIDTH = getProperty("window", "width").toInt(); WINDOW_HEIGHT = getProperty("window", "height").toInt(); WINDOW_BACKGROUND_COLOR = getProperty("window", "backgroundColor").toString(); @@ -47,9 +62,3 @@ LOG_FILE = getProperty("log", "logFile").toString(); LOG_LEVEL = getProperty("log", "logLevel").toString(); } - - -QVariant SettingConfig::getProperty(QString nodeName, QString keyName) { - QVariant var = this->setting->value(QString("/%1/%2").arg(nodeName).arg(keyName)); - return var; -} diff --git a/utils/SettingConfig.h b/utils/SettingConfig.h index be5bbfe..12785e1 100644 --- a/utils/SettingConfig.h +++ b/utils/SettingConfig.h @@ -1,4 +1,4 @@ -#ifndef SETTINGCONFIG_H +#ifndef SETTINGCONFIG_H #define SETTINGCONFIG_H #include @@ -24,6 +24,8 @@ * @title */ QVariant getProperty(QString nodeName, QString keyName); + void setProperty(QString nodeName, QString keyName, QString value); + void init(); /******** 以下为需要的各类参数 ********/ int WINDOW_WIDTH; diff --git a/utils/UtilInclude.h b/utils/UtilInclude.h index 3eed801..bf21cd3 100644 --- a/utils/UtilInclude.h +++ b/utils/UtilInclude.h @@ -1,10 +1,6 @@ #ifndef UTILINCLUDE_H #define UTILINCLUDE_H -//#define ELPP_THREAD_SAFE -//#define ELPP_QT_LOGGING - -//#include "easyloggingpp/easylogging++.h" #include "ByteUtil.h" #include "ImageUtil.h" #include "SelectDeptUtil.h"