Làm cách nào để thực hiện các phím Esc để thu nhỏ hộp thoại? Theo mặc định nó đóng. Tôi có nên xử lý KeyEvent
hoặc có cách nào tốt hơn không?Qt - Esc không được đóng hộp thoại
Trả lời
Tôi nghĩ rằng bạn có thể sử dụng này:
MyDialog::keyPressEvent(QKeyEvent *e) {
if(e->key() != Qt::Key_Escape)
QDialog::keyPressEvent(e);
else {/* minimize */}
}
Cũng có một cái nhìn tại Events and Event Filters tài liệu.
Tôi nghĩ rằng để làm điều này, về cơ bản bạn phải tránh kế thừa từ QDialog
. The documentation for QDialog
nói:
thoát chính
Nếu người dùng nhấn phím Esc trong một hộp thoại , QDialog :: chối() sẽ được gọi là . Điều này sẽ làm cho cửa sổ thành đóng: Sự kiện đóng không thể được bỏ qua.
tài liệu hay Tyler! tại sao không ghi đè thay vì tránh kế thừa? – n611x007
Từ chối cuộc gọi thoát(). Tôi ghi đè lên chức năng này (trong trường hợp của tôi không để giảm thiểu thoại nhưng để nhắc để lưu)
void MyDialog::reject() {if(cleanupIsOK()) done(0);}
Al_
Đổi tên từ chối là đúng. Nhưng hãy cẩn thận vì nếu bạn muốn đóng hộp thoại theo cách khác, bạn không thể gọi gần.
MyDialog::reject(){
if(some_closing_condition)
{
QDialog::reject() //calls the default close.
}
else
{
//skip reject operation
}
}
- 1. Qt, hộp thoại không theo phương thức không tự đóng
- 2. Hộp thoại FB.ui yêu cầu redirect_uri, hộp thoại không đóng
- 3. Cách đóng hộp thoại duy nhất trên phím ESC trong WPF/WinForms?
- 4. Mở hộp thoại mới từ hộp thoại trong qt
- 5. Hộp thoại giao diện người dùng jQuery - cách làm cho hộp thoại không đóng được?
- 6. Phím Esc và Enter trong hộp thoại Cocoa
- 7. Sau khi thêm hộp thoại không đóng
- 8. Phương thức hộp thoại Jquery không đóng
- 9. Hộp thoại giao diện người dùng jQuery: cách đóng hộp thoại khi nhấp vào bên ngoài?
- 10. Cách đóng Hộp thoại jQuery trong hộp thoại?
- 11. Qt, Hộp thoại Bộ chọn Màu?
- 12. Cách đóng hộp thoại facebook SDK được mở bằng FB.ui()?
- 13. Làm cách nào để ghi đè hành vi nhấn phím ESC cho hộp thoại jQuery
- 14. Trình nghe Java trên hộp thoại đóng
- 15. Đóng các hộp thoại con khi đóng phụ huynh
- 16. Hộp thoại Jquery - không phai mờ trước khi đóng
- 17. OnCancelListener không được gọi trong Hộp thoại
- 18. Hộp thoại phương thức Qt và quy trình chính
- 19. Qt - thêm siêu liên kết vào hộp thoại
- 20. Cách thêm hộp thoại chọn tệp bằng QT Createor?
- 21. Android AlertDialog với DialogFragment: không đóng hộp thoại ngay cả khi OK được nhấp
- 22. Dừng hộp ưa thích khi người dùng nhấn Esc
- 23. Làm thế nào để ngăn chặn đóng hộp thoại MFC trên các phím Enter và Escape?
- 24. Đóng một hộp thoại bằng cách nhấn Enter
- 25. Biểu mẫu hộp thoại WinForms - Đóng hoặc hủy?
- 26. Chuyển hướng hộp thoại jquery ui trên đóng
- 27. Ẩn bàn phím nhập mềm khi hộp thoại đóng
- 28. Ngăn chặn nút quay lại từ đóng hộp thoại
- 29. Cách đóng Hộp thoại Tin nhắn theo chương trình
- 30. Đóng tất cả các hộp thoại đang mở? (JQuery)
Bạn có thể muốn đối diện với mọi thứ trong câu lệnh if-else. – Narek
Hm, tôi nghĩ rằng đó là chính xác: NẾU (không Excape) {/ * bỏ qua * /} ELSE {/ * hide * /} – mosg
Vui lòng thay đổi mã của bạn thành những điều sau đây để tôi có thể chấp nhận câu trả lời của bạn. Cảm ơn! void MyDialog :: keyPressEvent (QKeyEvent * e) {if (e-> key()! = Qt :: Key_Escape) QDialog :: keyPressEvent (e); else/* minim * /} – Narek