[問題] QT SLOT多參數問題

看板C_and_CPP作者 (chec)時間7年前 (2016/10/26 13:34), 7年前編輯推噓2(204)
留言6則, 4人參與, 最新討論串1/1
開發平台(Platform): (Ex: Win10, Linux, ...) VS2015 編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出) QT5.7 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 我目前寫了一個跟WEB API溝通的方法,但可能會因為呼叫他的人不一樣 (EX login or upLoad 去CALL它) server 回傳回來的值不一樣要做額外的處理,我也同樣是使用 QNetworkAccessManager的finished去接傳回來的值 然後再用SLOT(whenFinished(QNetworkReply*))這個方法去解析回傳的值 請問我在whenFinished裡面有辦法取得是哪個行為(login or upLoad) 去呼叫webApiConn的嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.124.46.82 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1477460054.A.11C.html

10/26 14:12, , 1F
全域變數
10/26 14:12, 1F

10/26 15:58, , 2F
比較好的方法是用不同的 manager, 然後用 sender() 判斷
10/26 15:58, 2F

10/26 15:58, , 3F
另一個方法是用 lambda slot 語法寫成 closure
10/26 15:58, 3F
請問樓上大大的意思是 行為1 Login QNetworkAccessManager manager1 行為2 upLoad QNetworkAccessManager manager2 然後 connect(manager1, SIGNAL(finished()), this, SLOT(whenFinished())) connect(manager2, SIGNAL(finished()), this, SLOT(whenFinished())) 因為都同樣會call到whenFinished()這個方法 所以我在whenFinished裡面去取得誰是sender()就可以知道是哪個行為了嗎 ==================================================== 我懂了 我用QObject::sender() 但如果都是同一個 QNetworkAccessManager class 那這一招就對我沒有用了 除非我要使用不同class的Network Manager ※ 編輯: checkIO (59.124.46.66), 10/26/2016 17:59:35

10/29 19:14, , 5F
應該可以直接從 reply 拿到當初的 request object
10/29 19:14, 5F

11/01 00:17, , 6F
改用curl(誤)
11/01 00:17, 6F
文章代碼(AID): #1O441M4S (C_and_CPP)