解决三方调用showUI,扫描完成后设置界面没有关闭的问题

This commit is contained in:
yangjiaxuan 2023-12-01 11:36:12 +08:00
parent f3989426bb
commit 11175fa485
2 changed files with 21 additions and 7 deletions

View File

@ -38,6 +38,7 @@ hg_settingdialog::hg_settingdialog(class Manager *mgr, SANE_Handle handle, const
, cur_cfg_(cfg) , cur_cfg_(cfg)
, m_isMultiOutMode(false) , m_isMultiOutMode(false)
, m_isScanning(false) , m_isScanning(false)
, m_isAutoFinish(false)
{ {
m_mgr = mgr; m_mgr = mgr;
@ -95,8 +96,14 @@ hg_settingdialog::~hg_settingdialog()
//cur_cfg_->release(); //cur_cfg_->release();
m_mgr->m_settingUi = NULL; m_mgr->m_settingUi = NULL;
if(!quit_) if (m_isAutoFinish)
{
m_callback(UI_RESULT_CLOSE_NORMAL);
}
else if (!quit_)
{
m_callback(UI_RESULT_CLOSE_SETTING); m_callback(UI_RESULT_CLOSE_SETTING);
}
} }
void hg_settingdialog::apply_scheme(SANE_Handle dev, LPSANEAPI api, gb::sane_config_schm* schm) void hg_settingdialog::apply_scheme(SANE_Handle dev, LPSANEAPI api, gb::sane_config_schm* schm)
@ -1210,16 +1217,22 @@ void hg_settingdialog::updateUIStatus()
} }
} }
void hg_settingdialog::on_scan_status(QString info, bool status) void hg_settingdialog::on_scan_status(QString info, bool isScanning)
{ {
if (!info.isEmpty()) if (!info.isEmpty())
{ {
QMessageBox::information(this, tr("Prompt"), info); QMessageBox::information(this, tr("Prompt"), info);
} }
m_isScanning = status; m_isScanning = isScanning;
this->setEnabled(!status); this->setEnabled(!isScanning);
setAttribute(Qt::WA_DeleteOnClose, !status); setAttribute(Qt::WA_DeleteOnClose, !isScanning);
if (!isScanning)
{
m_isAutoFinish = true;
close();
}
} }
void hg_settingdialog::slot_checkedClicked() void hg_settingdialog::slot_checkedClicked()

View File

@ -137,10 +137,10 @@ private:
QVector<QWidget*> m_list_widgets; QVector<QWidget*> m_list_widgets;
signals: signals:
void scan_status(QString info, bool status); void scan_status(QString info, bool isScanning);
private slots: private slots:
void on_scan_status(QString info, bool status); void on_scan_status(QString info, bool isScanning);
private slots: private slots:
void slot_checkedClicked(); void slot_checkedClicked();
@ -187,6 +187,7 @@ private:
bool m_isRefreshUi; bool m_isRefreshUi;
bool m_isMultiOutMode; bool m_isMultiOutMode;
bool m_isScanning; bool m_isScanning;
bool m_isAutoFinish;
}; };
#endif // HG_SETTING_DIALOG_H #endif // HG_SETTING_DIALOG_H