내가 현재 정력 같은 입력 바있다 Qt를 가진 브라우저를 개발하고 있어요/자신의 입력 위젯 authenticationRequired 그 안에는 QLabel
이 들어 있습니다.는 :: 비동기
이제 HTTP 인증을 처리하고 싶습니다. 다른 프로젝트에서 볼 수있는 일반적인 사항은 모달 QDialog
을 연 다음 authenticationRequired signal에 연결된 슬롯 안에 exec()
을 호출하는 것입니다.
이제 상태 표시 줄을 사용하여 사용자에게 인증 정보를 묻습니다. 즉, 프롬프트를 표시하고 QLineEdit을 사용하여 정보를 입력하십시오.
내 문제는 authenticationRequired 슬롯 블록입니다. 단순히 메인 루프에서 계속 실행하고 사용자가 완료 될 때 추가 된 인증 정보로 요청을 계속할 수 없습니다. 사용자로부터 응답이 아직 없지만 QCoreApplication::processEvents
를 호출하는 동안 상태 표시 줄에서 값을 얻는 몇 가지 기능을 구현
:
나는 약 2 솔루션을 생각했습니다. 그러나 이것이 좋은 생각인지, 그리고 실제 이벤트 루프로 돌아갈 때까지 응용 프로그램이 많은 CPU를 소비하는지 잘 모르겠습니다.
요청을 저장하고 중단하고 사용자에게 인증을 요청한 다음 인증 정보가 추가되는 즉시 요청을 다시 만듭니다. 하지만 단순히
QNetworkReply
을 복제 한 다음 원래 회신에서abort()
으로 전화를 걸어 나중에 다시 시작할 수는없는 것 같습니다.
것은 QDialog::exec()
is implemented는 그들이 통과 QEventLoop::DialogExec
의 문서화되지 않은 값으로 새로운 QEventLoop
을 만들 것 방법을 찾고있다. 동일한 작업을 수행 할 수 있을지 궁금하지만 일단 사용자 입력이 끝나면 이벤트 루프를 종료하는 방법을 모르겠습니다.
어떤 아이디어가 가장 정상적인 것 같습니까?