qtconcurrent没有匹配的函数来调用'run'

时间:2019-08-29 15:18:59

标签: c++ multithreading qt

要登录用户,我在以下课程中有一个方法class ProbeConnection : public QObject, QRunnable

该登录方法称为QRunnable类的预期运行方式。

void ProbeConnection::run(QString username, QString password, QString ipAddress, bool fts, bool tts, bool pcap, bool events, bool os_meas)

该方法需要在其他线程中运行,因为它在无响应时会阻塞gui(该方法用于登录)。 我试图通过运行以下命令使其与QtConcurrent一起运行:

QFuture<void> future = QtConcurrent::run(this->run(username, password, ipAddress, fts, tts,  pcap,  events,  os_meas));

但是我收到的消息是:

  

没有匹配功能可调用“运行”

当带有参数时如何启动run方法?

1 个答案:

答案 0 :(得分:0)

使用成员函数调用QtConncurrent::run时,您需要正确的QtConncurrent::run语法,如this thread所示

Multi-threading Technologies in Qt中突出显示;当您想重用 QThreadPool 中的现有线程时,将使用QRunnable,另一方面,QtConcurrent通常将用于其高级API,并返回一个QFuture对象从线程检索结果。

要使用QRunnable::run,请在子类中重新实现它,然后使用QThreadPool::start()QRunnable放入QThreadPool的运行队列中...而不是调用QtConcurrent::run

在您的代码中,ProbeConnection::runQFuture<void>均为void ..我认为没有理由使用QtConcurrent ..或直接使用没有{{1 }}。