【问题标题】:How to get a variable from slot? [closed]如何从插槽中获取变量? [关闭]
【发布时间】:2013-11-22 09:59:48
【问题描述】:

我可以使用带返回的插槽吗? 例如:

QObject::connect(sender, SIGNAL(finished()), receiver, SLOT(onprocessFinished()));

并且 pnprocessFinished 返回一个稍后使用的 QString 那有可能吗?如果是,必须怎么做?

【问题讨论】:

  • 这是查看文档的主要示例。有许多插槽可以在特定的“事件”上获取某些值;它主要取决于您谈论的 QObject 派生。也就是说,您的问题没有得到充分研究,而且范围太广。

标签: qt blackberry-10 signals-slots


【解决方案1】:

一个槽可以返回一个值,但信号必须返回相同的类型,并且它适用于直接连接。调用emit会得到返回值:

void A::foo() {
    connect( this, SIGNAL(mySignal()), this, SLOT( mySlot() ) );
    int var = emit mySignal(); // int mySignal()
    qDebug() << var; // will print 12
}

int A::mySlot() {
    return 12;
}

但是,我觉得这没什么用……

【讨论】:

  • 这里对这个问题有一个很好的答案:stackoverflow.com/questions/5842124/… 但没有解决的一件事是跨线程信号。期望来自 SIGNAL-SLOT 连接的返回值假定实现细节是函数调用语义。在级联信号中,信号经常跨线程并异步执行。这听起来像是 MOC 编译器的工件,而不是环境的特性。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-12-05
  • 2021-10-22
  • 2022-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-29
相关资源
最近更新 更多