2013-11-22 44 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