2013-11-22 42 views
-1

我可以使用带回位的插槽吗? 例如:如何从插槽获取变量?

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

和pnprocessFinished返回以后使用 这是可能为QString?如果是的话,它是如何做到的?

+0

这对寻找到的文件一个典型的例子。在特定的“事件”中存在许多时隙来获得特定的值;它主要取决于你所谈论的QObject派生。也就是说,你的问题没有得到很好的研究,而且过于宽泛。 –

回答

0

一个插槽可以返回一个值,但信号必须返回相同的类型,它适用于直接连接。当你调用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; 
} 

但是,我不认为这是有益的...

+0

这里有一个非常好的答案这个问题:http://stackoverflow.com/questions/5842124/can-qt-signals-return-a-value但没有解决的一件事是跨线程信号。期望来自SIGNAL-SLOT连接的返回值假定实现细节是函数调用语义。在级联中信号通常是交叉线程,并且是异步执行的。这个事实听起来像是MOC编译器的工件,而不是环境的一个特征。 – Richard