Tôi đã nút khuyết tật X trong Qt từ thoại của tôi sử dụng dòng này:Làm cách nào để tắt tính năng đóng cửa sổ Alt + F4 bằng Qt?
myDialog->setWindowFlags(Qt::Dialog | Qt::Desktop)
nhưng tôi không thể phát hiện Alt +F4 sử dụng mã này:
void myClass::keyPressEvent(QKeyEvent *e)
{
if ((e->key()==Qt::Key_F4) && (e->modifiers()==Qt::AltModifier))
doSomething();
}
gì nên làm gì để phát hiện Alt + F4 hoặc tắt tính năng này trong Qt?
Bạn đã có hai lỗi: nó là 'keyPressEvent (QKeyEvent * evt) '' Press' không 'Pressed' và loại là khác nhau. Nhưng với bản sửa lỗi này được áp dụng ... nó hoạt động tốt. :) –
Chỉ cần ghi đè keyPressEvent (QKeyEvent * evt) và để trống, có thể gây ra các sự cố khác, chẳng hạn như không hoạt động. Nhập hành vi quan trọng có thể cần, ví dụ, khi chúng tôi muốn cho phép người dùng tiếp tục bằng cách bấm phím Enter. Vì vậy, nó là tốt hơn để xác định các phím chúng tôi không muốn cho phép một cách rõ ràng trong trường hợp cụ thể như vậy. Hoặc, nói cách khác, nó sẽ được khuyến khích để gọi BaseWidget :: keyPressEvent (evt) nơi BaseWidget là một cái gì đó được thừa kế (nó có thể là QWidget, QDialog, vv) –