QMetaObject::invokeMethod过载的文档
template <
typename Functor,
typename FunctorReturnType>
bool QMetaObject::invokeMethod(
QObject *context,
Functor function,
Qt::ConnectionType type = Qt::AutoConnection,
FunctorReturnType *ret = nullptr)是:
调用上下文事件循环中的函数。函数可以是函子,也可以是指向成员函数的指针。如果可以调用函数,则返回true。如果没有这样的函数或参数不匹配,则返回false。函数调用的返回值放在ret中。
我假设这意味着lambda或std::function可以作为参数function传递,因为它们都是函子类型。
我还假定type的论点受到尊重,尽管文档中没有提到这个论点。
(“context的事件循环”是什么意思?是否每个QObject都以某种方式与事件循环相关联?而术语“事件循环”是指相关的事件循环)
调用function 时,向传递哪些参数(如果有的话)?
发布于 2020-12-07 13:52:41
是的,您可以传递给std::function.或
type是受人尊敬的invokeMethod调用QCoreApplication::postEvent,其中receiver是contextfunction (除非它的指针到成员,在这种情况下,接收器作为隐式对象参数传递)所以任何需要的参数都应该被lambda捕获或以其他方式绑定。https://stackoverflow.com/questions/65182030
复制相似问题