만드는 방법 Esc 키를 최소화하여 대화 상자를 최소화 하시겠습니까? 기본적으로 종료됩니다. KeyEvent
을 처리해야합니까? 아니면 더 좋은 방법이 있습니까?Qt - Esc는 대화 상자를 닫지 않아야합니다.
12
A
답변
12
나는 당신이 사용할 수 있습니다 생각 :
MyDialog::keyPressEvent(QKeyEvent *e) {
if(e->key() != Qt::Key_Escape)
QDialog::keyPressEvent(e);
else {/* minimize */}
}
는 또한 Events and Event Filters 문서를 보라.
1
이 작업을 수행하려면 기본적으로 QDialog
을 상속하지 않아야합니다. The documentation for QDialog
는 말한다 : 사용자가 대화 상자에서 Esc 키를 누르면
탈출 키
경우, 인 QDialog이 :: 를 호출됩니다() 거부합니다. 이로 인해 창은 으로 닫힙니다. 닫기 이벤트는 으로 무시할 수 없습니다.
+0
멋진 문서 Tyler! 상속을 피하는 대신 오버라이드하지 않는 이유는 무엇입니까? – n611x007
14
Escape는 reject()를 호출합니다. 나는 거부 이름 바꾸기
void MyDialog::reject() {if(cleanupIsOK()) done(0);}
Al_
3
가 올바른지 (대화 상자를 최소화하기 위해 나의 경우 만 저장하라는 메시지를 표시하는)이 기능을 재정의합니다. 그러나 다른 방법으로 대화 상자를 닫으려는 경우 닫기를 호출 할 수 없으므로주의해야합니다.
MyDialog::reject(){
if(some_closing_condition)
{
QDialog::reject() //calls the default close.
}
else
{
//skip reject operation
}
}
관련 문제
- 1. 대화 상자를 자동 닫지 마십시오.
- 2. Android - dismissDialog가 대화 상자를 닫지 않습니다.
- 3. Qt 전화 걸기 대화 상자를 차단 하시겠습니까?
- 4. QT 4.5.2에서 XCreateWindow를 사용하여 만든 창에 대화 상자를 표시하는 방법
- 5. Jquery 대화 상자를 디버그하는 방법
- 6. 강제 대화 상자를 C#
- 7. 대화 상자를 미리로드하는 방법
- 8. 셰어 : commonModalDialogClose 대화 크로스 도메인을 닫지 않습니다
- 9. 이동 명령에 QT 모덜리스 대화 창 dos'nt 응답 내 응용 프로그램에서 모덜리스 대화 상자를 사용하여 메신저
- 10. 대화 상자에서 대화 상자를 열 수 있습니까?
- 11. Show 대화 상자가 대화 상자를 표시하지 않습니다.
- 12. VC++ : esc가 대화 상자 (MFC가 아님)를 닫지 못하게하는 방법
- 13. 대화 상자를 닫지 않고 Enter 키를 눌러 VB.net을 강제로 만들 수 있습니까?
- 14. Qt 파일 저장 대화 상자 사용자 정의하기
- 15. Swing이 대화 상자를 JButton에 바인딩합니다.
- 16. Winform 대화 상자를 이동하는 방법
- 17. 자바에서 오류 대화 상자를 읽으십시오.
- 18. C# CancelButton이 대화 상자를 닫습니까?
- 19. 아이폰에서 대화 상자를 여는 방법?
- 20. Jquery 대화 상자를 닫는 대신에
- 21. 다운로드 대화 상자를 여는 링크
- 22. jQuery : 대화 상자를 수동으로 닫습니다.
- 23. 사용자 정의 대화 상자를 닫으시겠습니까?
- 24. 팝업 대화 상자를 닫는 방법?
- 25. jquery에서 id가없는 대화 상자를 작성하십시오.
- 26. '부분적으로'모달 대화 상자를 만들려면 어떻게해야합니까?
- 27. 대화 상자를 화면 중앙에 배치
- 28. 올바른 방법으로 대화 상자를 닫으십시오.
- 29. 오이에서 대화 상자를 테스트하는 방법?
- 30. PackageMaker에 등록 대화 상자를 추가하십시오.
if-else 문에서 정반대로 할 수 있습니다. – Narek
흠, 나는 그것이 맞는 것 같아요 : IF (Excape) {/ * ignore * /} ELSE {/ * hide * /} – mosg
답변을 수락 할 수 있도록 코드를 다음과 같이 변경하십시오. 감사! void MyDialog :: keyPressEvent (QKeyEvent * e) {if (e-> key()! = Qt :: Key_Escape) QDialog :: keyPressEvent (e); else/* minimize * /} – Narek