내가 Qt는에QMessageBox가 Qt의 전체 주 스레드 실행을 차단합니까?
내 상황은 새로운 오전 :
reply = QMessageBox::question(this, tr("Sure want to quit?"), tr("Sure quit?"), QMessageBox::Yes|QMessageBox::No);
: 어떤 이유로, 나는 같은 시간에 내가 사용 QMessageBox 창을 만들고 싶습니다, 메인 쓰레드에서 하트 비트 신호를 방출해야
이 메시지 상자가 다른 창에서 사용자의 입력을 차단하도록하지만 하트 비트 신호를 차단하고 싶지는 않습니다. 어떻게해야합니까? Qt에서 기본적으로이 작업을 수행합니까?
필자의 경우, "대화 상자에서 exec()를 호출하여"하트 비트 신호를 중지하겠습니까? 회사에서 어떻게 이루어 졌는지에 대한 간단한 예를 들려 주시겠습니까? 정말로 감사드립니다. – Nyaruko
@Nyaruko 아니요, 'QDialog :: exec'도 똑같습니다. 로컬 이벤트 루프를 작성합니다. 로컬 이벤트 루프가 좋지 않을 수 있습니다. 이유를 확인하려면 [이 기사] (https://blogs.kde.org/2009/03/26/how-crash-almost-every-qtkde-application-and-how-fix-it-0)를 읽을 수 있습니다. . – thuga
특히 로컬 이벤트 루프에서 수행되지 않은 작업은'deleteLater' 실행입니다. 정확히'this'는'delete'd 크래시를 막습니다. (실제로 부모를 '삭제'하면 도움이되지 않지만'deleteLater'를 사용하면 도움이됩니다. –