bar*_*dao 3 c++ qt qthread qt5 qtimer
这有什么问题吗?它给了我奇怪的编译错误:
候选函数不可行:第二个参数没有从“void (QThread::*)(QThread::QPrivateSignal)”到“const char *”的已知转换
QTimer timer;
timer.setInterval(3000);
connect(&timer, &QTimer::timeout, this, &ThisClass::runConnectionCheck);
QThread connectionThread;
timer.moveToThread(&connectionThread);
connect(&connectionThread, &QThread::started, &timer, &QTimer::start);
connectionThread.start();
有 2 个QTimer槽名为start(),因此编译器会产生混淆,因此您应该QOverload:
connect(&connectionThread, &QThread::started, &timer, QOverload<>::of(&QTimer::start));
或者static_cast<>():
connect(&connectionThread, &QThread::started, &timer,static_cast<void (QTimer::*)()>(&QTimer::start));
@KubaOber提供了 2 个选项:
C++14:
qOverload<>(&QTimer::start)
拉姆达:
[&]{ timer.start(); }
| 归档时间: | 
 | 
| 查看次数: | 775 次 | 
| 最近记录: |