调整twainui进度窗口非模态崩溃问题

This commit is contained in:
yangjiaxuan 2023-04-23 09:25:52 +08:00
parent 3397106b7d
commit d26bc873f9
3 changed files with 28 additions and 24 deletions

View File

@ -1,5 +1,7 @@
#include "dialog_progress_ui.h"
#include "ui_dialog_progress_ui.h"
#include "lang/app_language.h"
#include <QCloseEvent>
Dialog_progress_ui *Dialog_progress_ui::m_param = nullptr;
@ -7,6 +9,15 @@ Dialog_progress_ui::Dialog_progress_ui(std::function<void (ui_result)> callback,
QDialog(parent),
ui(new Ui::Dialog_progress_ui)
{
int cp = lang_get_cur_code_page();
if (20127 == cp)
m_translator.load(":translation/TwainUI_zh_EN.qm");
else
m_translator.load(":translation/TwainUI_zh_CN.qm");
QCoreApplication::installTranslator(&m_translator);
setAttribute(Qt::WA_DeleteOnClose, true);
ui->setupUi(this);
m_callback = callback;
@ -19,6 +30,8 @@ Dialog_progress_ui::Dialog_progress_ui(std::function<void (ui_result)> callback,
Dialog_progress_ui::~Dialog_progress_ui()
{
delete ui;
QCoreApplication::removeTranslator(&m_translator);
}
void Dialog_progress_ui::on_pbtn_cancelScan_clicked()

View File

@ -2,6 +2,7 @@
#define DIALOG_PROGRESS_UI_H
#include <QDialog>
#include <qtranslator.h>
#include "twainui.h"
namespace Ui {
@ -30,6 +31,7 @@ private:
static void FuncNotify(int event, void *msg, int flag);
private:
QTranslator m_translator;
Ui::Dialog_progress_ui *ui;
std::function<void (ui_result)> m_callback;

View File

@ -11,9 +11,13 @@ extern bool g_ownApplication;
int choose_scanner(const std::vector<DEVQUE> &devs)
{
QWidget* qParent = nullptr;
#ifdef HG_CMP_MSC
if (!g_ownApplication)
g_ownApplication = QMfcApp::pluginInstance(g_hInst);
QWinWidget win(nullptr);
#else
qParent = parent;
#endif
QTranslator translator;
@ -25,16 +29,10 @@ int choose_scanner(const std::vector<DEVQUE> &devs)
QCoreApplication::installTranslator(&translator);
Dialog_device_select dlg(devs);
if (dlg.exec())
{
return dlg.getDevId();
QCoreApplication::removeTranslator(&translator);
}
else
{
return -1;
QCoreApplication::removeTranslator(&translator);
}
dlg.exec();
QCoreApplication::removeTranslator(&translator);
return dlg.getDevId();
}
char *apply_current_config(const char *dev_name, SANE_Handle device, LPSANEAPI api)
@ -97,27 +95,18 @@ int show_progress_ui(HWND parent, std::function<void (ui_result)> callback, std:
#ifdef HG_CMP_MSC
if (!g_ownApplication)
g_ownApplication = QMfcApp::pluginInstance(g_hInst);
QWinWidget win(parent);
QWinWidget *win = new QWinWidget(parent);
if (nullptr != parent)
{
win.showCentered();
qParent = &win;
win->showCentered();
qParent = win;
}
#else
qParent = parent;
#endif
QTranslator translator;
int cp = lang_get_cur_code_page();
if (20127 == cp)
translator.load(":translation/TwainUI_zh_EN.qm");
else
translator.load(":translation/TwainUI_zh_CN.qm");
QCoreApplication::installTranslator(&translator);
Dialog_progress_ui dlg(callback, notify, qParent);
dlg.show();
QCoreApplication::removeTranslator(&translator);
Dialog_progress_ui *dlg = new Dialog_progress_ui(callback, notify, qParent);
dlg->show();
return 0;
}