首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QMetaObject::invokeMethod with?

QMetaObject::invokeMethod with?
EN

Stack Overflow用户
提问于 2020-12-07 12:48:56
回答 1查看 577关注 0票数 2

QMetaObject::invokeMethod过载的文档

代码语言:javascript
复制
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 时,向传递哪些参数(如果有的话)?

EN

回答 1

Stack Overflow用户

发布于 2020-12-07 13:52:41

是的,您可以传递给std::function.或

  • 是的,type是受人尊敬的

  • invokeMethod调用QCoreApplication::postEvent,其中receivercontext

  • 没有参数传递给function (除非它的指针到成员,在这种情况下,接收器作为隐式对象参数传递)所以任何需要的参数都应该被lambda捕获或以其他方式绑定。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65182030

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档