关于QT中跨线程的信号处理有关问题,求大神
关于QT中跨线程的信号处理问题,求大神!说明如下:1. Receiver对象生存在主线程,主线程拥有事件循环;2. Rece
关于QT中跨线程的信号处理问题,求大神!
说明如下:
1. Receiver对象生存在主线程,主线程拥有事件循环;
2. Receiver对象生存期足够长;
3. connect函数调用成功,连接类型缺省为autoConnection, 对于跨线程的信号,将会自动使用队列连接;
4. 信号确实发送,emit threadSignal();语句确实执行了;
5. Receiver对象所在线程(主线程)界面响应正常,事件循环没有阻塞;
6. 问题是槽函数从来都没有执行过?纠结其原因。。。
望大神解惑
class MyThread : public QThread
{
Q_OBJECT
public:
MyThread();
void run()
{
emit threadSignal();
}
signals:
void threadSignal();
};
class Receiver : public QObject
{
Q_OBJECT
public:
Receiver()
{
MyThread * thread = new MyThread;
connect(thread, SIGNAL(threadSignal()), this, SLOT(slotFunc()));
thread->start();
}
private slots:
void slotFunc()
{
qDebug() << "receive one signal.";
}
};
[解决办法]其实你可以去看下Qt的帮助文档是怎么实现多线程的,看了你就懂了。
http://qt-project.org/doc/qt-5.0/qtcore/qthread.html