解决三方软件showUI并且无进度指示器时,不会报错的问题

This commit is contained in:
yangjiaxuan 2023-11-30 17:59:02 +08:00
parent bc80b1ea74
commit f3989426bb
3 changed files with 25 additions and 19 deletions

View File

@ -83,8 +83,7 @@ hg_settingdialog::hg_settingdialog(class Manager *mgr, SANE_Handle handle, const
m_originGammaData = m_gammaData; m_originGammaData = m_gammaData;
connect(comb_, SIGNAL(currentTextChanged(const QString)), this, SLOT(on_current_scheme_changed())); connect(comb_, SIGNAL(currentTextChanged(const QString)), this, SLOT(on_current_scheme_changed()));
connect(this, SIGNAL(scan_start()),this, SLOT(on_scan_start()), Qt::QueuedConnection); connect(this, SIGNAL(scan_status(QString,bool)),this, SLOT(on_scan_status(QString, bool)), Qt::QueuedConnection);
connect(this, SIGNAL(scan_finish()), this, SLOT(on_scan_finish()), Qt::QueuedConnection);
*notify = FuncNotify; *notify = FuncNotify;
} }
@ -191,13 +190,24 @@ void hg_settingdialog::FuncNotify(int event, void* msg, int flag)
{ {
case SANE_EVENT_WORKING: case SANE_EVENT_WORKING:
{ {
emit p->scan_start(); QString finishInfo;
if (0 != flag)
{
finishInfo = (char*)msg;
}
emit p->scan_status(finishInfo, true);
} }
break; break;
case SANE_EVENT_SCAN_FINISHED: case SANE_EVENT_SCAN_FINISHED:
{ {
emit p->scan_finish(); QString finishInfo;
if (0 != flag)
{
finishInfo = (char*)msg;
}
emit p->scan_status(finishInfo, false);
} }
break; break;
} }
@ -1200,18 +1210,16 @@ void hg_settingdialog::updateUIStatus()
} }
} }
void hg_settingdialog::on_scan_start() void hg_settingdialog::on_scan_status(QString info, bool status)
{ {
m_isScanning = true; if (!info.isEmpty())
this->setEnabled(false); {
setAttribute(Qt::WA_DeleteOnClose, false); QMessageBox::information(this, tr("Prompt"), info);
} }
void hg_settingdialog::on_scan_finish() m_isScanning = status;
{ this->setEnabled(!status);
m_isScanning = false; setAttribute(Qt::WA_DeleteOnClose, !status);
this->setEnabled(true);
setAttribute(Qt::WA_DeleteOnClose, true);
} }
void hg_settingdialog::slot_checkedClicked() void hg_settingdialog::slot_checkedClicked()

View File

@ -137,12 +137,10 @@ private:
QVector<QWidget*> m_list_widgets; QVector<QWidget*> m_list_widgets;
signals: signals:
void scan_start(); void scan_status(QString info, bool status);
void scan_finish();
private slots: private slots:
void on_scan_start(); void on_scan_status(QString info, bool status);
void on_scan_finish();
private slots: private slots:
void slot_checkedClicked(); void slot_checkedClicked();