Bu hattı kullanarak iletişim kutusundan Qt engelli X düğmesine ettik:Alt + F4 penceresini Qt kullanarak nasıl kapatabilirim?
myDialog->setWindowFlags(Qt::Dialog | Qt::Desktop)
ama bu kodu kullanarak Alt + F4 bulamadık:
void myClass::keyPressEvent(QKeyEvent *e)
{
if ((e->key()==Qt::Key_F4) && (e->modifiers()==Qt::AltModifier))
doSomething();
}
neyi Alt + F4'u algılamalı veya Qt'de devre dışı bırakmalı mıyım?
İki hataları var: o Press' değil 'Pressed' ve tip farklıdır' keyPressEvent (QKeyEvent * evt) '' dır. Ama bu düzeltme uygulandığında ... iyi çalışıyor. :) –
Sadece keyPressEvent (QKeyEvent * evt) 'i geçersiz kılarak ve boş bırakarak çalışmama gibi başka sorunlara neden olabilir. Örneğin, kullanıcının Enter tuşuna basmaya devam etmesine izin vermek istediğimizde, gerekli olabilecek anahtar davranışı girin. Dolayısıyla, bu gibi özel durumlarda açıkça izin vermek istemediğimiz anahtarları tanımlamak çok daha iyidir. Ya da, başka bir deyişle, BaseWidget'ın (devredışı QDidog, QDialog, vb olabilir) BaseWidget :: keyPressEvent (evt) olarak adlandırılması önerilir. –