4#include <QLoggingCategory>
8static Q_LOGGING_CATEGORY(log,
"Operate")
13 qDebug(log) << Q_FUNC_INFO;
19 qDebug(log) << Q_FUNC_INFO;
22int CBackend::SetConnect(
COperate *pOperate)
24 qDebug(log) << Q_FUNC_INFO;
25 if(!pOperate)
return -1;
34 check = connect(
this, SIGNAL(
sigStop()),
37 check = connect(
this, SIGNAL(
sigError(
const int,
const QString&)),
38 pOperate, SIGNAL(
sigError(
const int,
const QString&)));
45 const QMessageBox::Icon&)),
47 const QMessageBox::Icon&)));
50 const QString&,
const QString&,
51 QMessageBox::StandardButtons,
52 QMessageBox::StandardButton&,
54 pOperate, SLOT(slotBlockShowMessageBox(
55 const QString&,
const QString&,
56 QMessageBox::StandardButtons,
57 QMessageBox::StandardButton&,
59 Qt::BlockingQueuedConnection);
65 pOperate, SLOT(slotBlockInputDialog(
const QString&,
69 Qt::BlockingQueuedConnection);
74 pOperate, SLOT(slotBlockShowWidget(
const QString&,
int&,
void*)),
75 Qt::BlockingQueuedConnection);
82 qDebug(log) << Q_FUNC_INFO;
84 nRet =
static_cast<int>(
OnInit());
85 if(nRet < 0)
return nRet;
94 qDebug(log) << Q_FUNC_INFO;
115 QTimer::singleShot(nTime,
this, SLOT(
slotTimeOut()));
118 qDebug(log) <<
"Process fail(< -1) or stop(= -1):" << nTime;
120 qCritical(log) <<
"Process fail:" << nTime;
121 emit
sigError(nTime,
"Process fail or stop");
123 }
catch(std::exception e) {
124 qCritical(log) <<
"Process fail:" << e.what();
127 qCritical(log) <<
"Process fail";
137 qWarning(log) <<
"Need to implement CConnect::OnProcess()";
后端接口。它由协议插件实现。 它默认启动一个定时器来开启一个非 Qt 事件循环(就是普通的循环处理)。 详见: Start()、 slotTimeOut()、 OnProcess() 。 当然,它仍然支...
void sigInformation(const QString &szInfo)
从后台线程中触发在主线程中显示信息,不阻塞后台线程
virtual int WakeUp()
Wake up.
virtual int OnProcess()
具体操作处理
void sigStop()
需要通知用户停止时触发。仅由插件触发。 当从插件中需要停止时触发。例如:对端断开连接、重置连接或者连接出错。
virtual OnInitReturnValue OnInit()=0
初始化
virtual int OnClean()=0
清理
void sigShowMessageBox(const QString &szTitle, const QString &szMessage, const QMessageBox::Icon &icon=QMessageBox::Information)
从后台线程中触发在主线程中显示消息对话框(QMessageBox),不阻塞后台线程
virtual int Start()
开始。根据 OnInit() 返回值来决定是否开始定时器来支持非 qt 事件
void sigError(const int nError, const QString &szError=QString())
当有错误产生时触发
void sigBlockShowMessageBox(const QString &szTitle, const QString &szMessage, QMessageBox::StandardButtons buttons, QMessageBox::StandardButton &nRet, bool &checkBox, QString checkBoxContext=QString())
阻塞后台线程,并在前台线程中显示消息对话框(QMessageBox)
void sigRunning()
当插件开始成功后触发。仅由插件触发
void sigFinished()
停止成功信号。仅由插件触发
virtual void slotTimeOut()
一个非 Qt 事件处理,它调用 OnProcess(),并根据其返回值开始新的定时器。 如果是不是一个非 Qt 事件循环(就是普通的循环处理), 可以重载它,或者 OnInit() 返回值大于 0
void sigBlockShowWidget(const QString &className, int &nRet, void *pContext)
阻塞后台线程,并在前台线程中显示窗口。
void sigBlockInputDialog(const QString &szTitle, const QString &szLable, const QString &szMessage, QString &szText)
阻塞后台线程,并在前台线程中显示输入对话框 (QInputDialog)