vs+qt error: No such slot 解决办法
环境:vs2013+qt5.6
今天学习多线程(movetoThread), 想通过信号槽来控制线程执行动作函数的启动。
代码如下:
connect(this, SIGNAL(operate(int)), worker, SLOT(doWork(int)));// √
doWork(int)这个函数是在另外一个class Worker里的,原本我的写法是:
connect(this, SIGNAL(operate(int)), worker, SLOT(Worker::doWork(int)));//x
两种写法都可以编译成功,但是在控制窗口查看的时候,发现提示错误:QObject::connect: No such slot Worker::Worker::doWork(int) in xxxxx.cpp
我做了很多尝试,发现第二种写法在QTCreator中是没问题的,但是在VS里就不支持这种写法
另外在解决过程中还百度了一些解决办法:
1、看类声明中有没有Q_OBJECT // 必须添加这个宏
2、看slot函数有没有声明
3、查看slot有没有出现拼写错误
4、signal和slots的参数要一样 // 这个我倒没有测试过
在执行第一个办法的时候可能会遇到问题,具体参考我的博客:https://blog.csdn.net/weixin_43711569/article/details/88241167