{
Q_OBJECT
public:
Worker (){m_hEvent = NULL ;};
public slots:
void doWork
(const QString ¶meter
) { // ...
setEvent(m_hEvent);
}
public :
void SetSyncEvent(Handle hEvent){m_hEvent = hEvent};
signals:
void resultReady
(const QString &result
);
private:
Handle m_hEvent ;
};
{
Q_OBJECT
public:
Controller() {
m_hEvent = ::CreateEvent(NULL,FALSE,FALSE,NULL);
Worker *worker = new Worker;
worker->SetEvent(m_hEvent);
worker->moveToThread(&workerThread);
connect(workerThread, &QThread::finished, worker, &QObject::deleteLater);
connect(this, &Controller::operate, worker, &Worker::doWork);
// connect(worker, &Worker::resultReady, this, &Controller::handleResults);
workerThread.start();
}
~Controller() {
workerThread.quit();
workerThread.wait();
}
void Oper()
{
WaitForSingleObject(m_hEvent,INFINITE);
.......
}
public slots:
// void handleResults(const QString &);
signals:
private:
Handle m_hEvent ;
};
void main()
{ Controller controle ; controle.oper();
}
class Worker : public QObject
{
Q_OBJECT
public:
Worker (){m_hEvent = NULL ;};
public slots:
void doWork(const QString ¶meter) {
// ...
setEvent(m_hEvent);
}
public :
void SetSyncEvent(Handle hEvent){m_hEvent = hEvent};
signals:
void resultReady(const QString &result);
private:
Handle m_hEvent ;
};
class Controller : public QObject
{
Q_OBJECT
QThread workerThread;
public:
Controller() {
m_hEvent = ::CreateEvent(NULL,FALSE,FALSE,NULL);
Worker *worker = new Worker;
worker->SetEvent(m_hEvent);
worker->moveToThread(&workerThread);
connect(workerThread, &QThread::finished, worker, &QObject::deleteLater);
connect(this, &Controller::operate, worker, &Worker::doWork);
// connect(worker, &Worker::resultReady, this, &Controller::handleResults);
workerThread.start();
}
~Controller() {
workerThread.quit();
workerThread.wait();
}
void Oper()
{
emit operate(QString("fsfs"));
WaitForSingleObject(m_hEvent,INFINITE);
.......
}
public slots:
// void handleResults(const QString &);
signals:
void operate(const QString &);
private:
Handle m_hEvent ;
};
void main()
{ Controller controle ; controle.oper();
}
To copy to clipboard, switch view to plain text mode
Bookmarks