我目前正在開發使用Qt瀏覽器具有VIM般的輸入欄:使用QNetworkAccessManager :: authenticationRequired與自己的輸入控件/異步
這基本上是一個QHBoxLayout
與QLineEdit
還有一些QLabel
在裏面。
現在我想處理HTTP身份驗證。我在其他項目中看到的通常情況是打開模式QDialog
,然後在連接到authenticationRequired signal的插槽內對其調用exec()
。
現在我想使用相同的狀態欄來詢問用戶認證信息,即顯示一些提示,然後使用QLineEdit輸入信息。
我的問題是authenticationRequired插槽塊,我不能簡單地繼續在主循環中運行,並繼續添加用戶完成時添加的驗證信息的請求。
我想過兩種解決方案:
實現一些功能,同時呼籲
QCoreApplication::processEvents
儘管沒有來自用戶的回覆尚未從狀態欄得到的值。然而,我不確定這是否是一個好主意,並且如果應用程序會佔用大量CPU,直到我回到真正的eventloop。以某種方式保存和中止請求,要求用戶進行身份驗證,然後在添加身份驗證信息後立即重新創建請求。但似乎我不能簡單地克隆
QNetworkReply
,然後在原始答覆上致電abort()
並稍後恢復。
如何QDialog::exec()
is implemented似乎他們創建一個新的QEventLoop
與傳遞的QEventLoop::DialogExec
無證價值展望。我想知道如果我能做同樣的事情,但是我不確定一旦用戶輸入那裏,我將如何退出事件循環。
這些想法聽起來是最理智的嗎?