[英]Get function which initiated QNetworkRequest in replyFinished()
我有以下問題:
我有一個類Foo,它封裝了一個web-api。 界面具有以下功能:
Foo :: addItem(QString id)
Foo :: updateItem(QString id)
兩個函數都使用相同的 URL啟動QNetworkRequest,但數據的使用情況不同。 因此我需要知道QNetworkRequest發起的插槽函數Foo :: replyFinished(QNetworkReply * wf_reply) 。
你怎么解決這個問題?
我可以使用變量存儲QNetworkRequest的地址,以便稍后將其與wf_reply-> request()進行比較,但這對我來說似乎是一個黑客攻擊。 考慮到你可以在第一次執行replyFinished()之前調用addItem()或updateItem()一百次。 最好的方法是向QNetworkRequest添加一個包含函數名稱或id的sting或整數。
在原始的QNetworkRequest
您可以使用設置屬性
setAttribute(Attribute code, const QVariant & value)
Attribute
是一個枚舉,只有這種情況有一個保留代碼, QNetworkRequest::User
。 (參見: 屬性 )
在QNetworkReply
,您可以使用request()
獲取QNetworkRequest
,然后使用attribute()
從那里獲取Attribute
一點點黑客,但我認為它應該工作。
您有四種選擇:
void QNetworkReply::finished()
信號 void QNetworkRequest::setOriginatingObject(QObject * object)
。 您遇到的問題是兩種請求都來自同一個QObject。 您可以創建兩個虛擬QObject,僅用於將其地址發送到標記請求,或者您可以使用reinterpret_cast將請求類型作為指針傳達。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.