问题遇到的现象和发生背景
在线程里使用QTimer::singleShot时,不同的写法会导致不同的结果,下面是代码
问题相关代码,请勿粘贴截图
//这种写法就可以执行
QTimer::singleShot(1000, this, [this]() {
qDebug() <<"******"<< __FUNCTION__ << QThread::currentThread();
});
//这种写法也可以执行,他和上面的lambda表达式一样,是传递的函数指针
QTimer::singleShot(1000, this,&CTestThread::timeOutTest);
//无法执行timeOutTest函数
QTimer::singleShot(1000, this,SLOT(timeOutTest()));
运行结果及报错内容
按理说这个线程里没有事件循环,应该不会执行槽函数啊,但是使用函指针那种方式,槽函数就可以被执行,这里我不太明白,祈求有了解的老哥指导一下。