ソースを参照

update: release page when changed

YaoH 3 週間 前
コミット
fb0b2d7f2a
2 ファイル変更6 行追加12 行削除
  1. 5 12
      blastopepage.cpp
  2. 1 0
      mainwindow.cpp

+ 5 - 12
blastopepage.cpp

@@ -50,7 +50,7 @@ void BlastOpePage::showCountDownWidget(QString uuid, const QString &topic, const
 void BlastOpePage::InitFace() {
     Logger::getInstance().info("start init face verification");
     LoadingWidget::showLoading(this, "请求创建人脸识别...");
-
+    closeWebViewAndRestoreUI();
     layout = new QVBoxLayout(this);
     // TODO: relase the qwebengineview when not successfully verified
     view = new QWebEngineView(this);
@@ -124,7 +124,6 @@ void BlastOpePage::closeWebViewAndRestoreUI() {
 void BlastOpePage::onUrlChanged(const QUrl &newUrl) {
     LoadingWidget::showLoading(this, "查询验证结果...");
     if (newUrl.host() == "www.integrateblaster.com") {
-        closeWebViewAndRestoreUI();
         QNetworkAccessManager manager;
         QUrl requestUrl(apiBackendUrl.resolved(QUrl(QString("h-face-verify/certifyId/%1").arg(certifyId))));
         QNetworkRequest request(requestUrl);
@@ -146,6 +145,7 @@ void BlastOpePage::onUrlChanged(const QUrl &newUrl) {
                     int ret = QMessageBox::information(nullptr, "认证失败", message + " ,请重新认证!");
                     if (ret == QMessageBox::Ok) {
                         InitFace();
+                        return;
                     }
                 } else {
                     QString passed = resultObj["Passed"].toString();
@@ -158,6 +158,7 @@ void BlastOpePage::onUrlChanged(const QUrl &newUrl) {
                         int ret = QMessageBox::critical(nullptr, "提示", "操作失败,请重新认证!");
                         if (ret == QMessageBox::Ok) {
                             InitFace();
+                            return;
                         }
                     }
                 }
@@ -171,19 +172,11 @@ void BlastOpePage::onUrlChanged(const QUrl &newUrl) {
         reply->deleteLater();
         LoadingWidget::hideLoading();
     }
+    closeWebViewAndRestoreUI();
     LoadingWidget::hideLoading();
 }
 
-BlastOpePage::~BlastOpePage() {
-    delete ui;
-
-    if (view) {
-        delete view;
-    }
-    if (layout) {
-        delete layout;
-    }
-}
+BlastOpePage::~BlastOpePage() { delete ui; }
 
 QJsonObject BlastOpePage::sendPostRequest(const QUrl &url, const QJsonObject &data) {
     QNetworkAccessManager manager;

+ 1 - 0
mainwindow.cpp

@@ -120,6 +120,7 @@ void MainWindow::switchPage(QWidget *button) {
             existingPage->hide();
             ui->stackedWidget->removeWidget(existingPage);
             createdPageByButton.remove(button);
+            delete existingPage;  // 删除旧页面
         }
 
         QWidget *newPage = factory->createPage(this);