我会创建几个新工作人员,将它们链接到QThreads并将您的信号连接到每个工作人员的插槽。诀窍是通过标志 Qt::QueuedConnection 进行连接,因此在两个线程上同时进行调用。不用担心,这不会产生两秒钟的开销。
class Worker1 : public QObject
{
Q_OBJECT;
public slots:
void capture(void);
}
class Worker2 : public QObject
{
Q_OBJECT;
public slots:
void capture(void);
}
void setup( void )
{
Worker1 * w1 = new Worker1;
Worker2 * w2 = new Worker2;
QThread * t1 = new QThread( w1 );
QThread * t2 = new QThread( w2 );
w1->moveToThread( t1 );
w2->moveToThread( t2 );
t1->start();
t2->start();
QTimer* timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), w1, SLOT(capture()), Qt::QueuedConnection );
connect(timer, SIGNAL(timeout()), w2, SLOT(capture()), Qt::QueuedConnection );
timer->start(0);
}
免责声明:我当场编写了这段代码,可能需要一些润色,但我希望你明白我的意思。