我可以使用帶回位的插槽嗎? 例如:如何從插槽獲取變量?
QObject::connect(sender, SIGNAL(finished()), receiver, SLOT(onprocessFinished()));
和pnprocessFinished返回以後使用 這是可能爲QString?如果是的話,它是如何做到的?
我可以使用帶回位的插槽嗎? 例如:如何從插槽獲取變量?
QObject::connect(sender, SIGNAL(finished()), receiver, SLOT(onprocessFinished()));
和pnprocessFinished返回以後使用 這是可能爲QString?如果是的話,它是如何做到的?
一個插槽可以返回一個值,但信號必須返回相同的類型,它適用於直接連接。當你調用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;
}
但是,我不認爲這是有益的...
這裏有一個非常好的答案這個問題:http://stackoverflow.com/questions/5842124/can-qt-signals-return-a-value但沒有解決的一件事是跨線程信號。期望來自SIGNAL-SLOT連接的返回值假定實現細節是函數調用語義。在級聯中信號通常是交叉線程,並且是異步執行的。這個事實聽起來像是MOC編譯器的工件,而不是環境的一個特徵。 – Richard
這對尋找到的文件一個典型的例子。在特定的「事件」中存在許多時隙來獲得特定的值;它主要取決於你所談論的QObject派生。也就是說,你的問題沒有得到很好的研究,而且過於寬泛。 –