c++ - How do I prevent the enter key from closing my QDialog (Qt 4.8.1) -
i have qdialog qdialogbuttonbox. ok , cancel buttons active. disable or hide ok button based on state of dialog. seems, no matter do, enter key activates ok button. don't want happen. have tried:
- setting default , autodefault properties false every time show/hide/enable/disable/whatever button
- installing event filter on ok button intercept key events (pressed , released) return, enter , space
- setting focus policy on button nofocus
and combinations of things above, enter key still accepts dialog. have clue how block this? seems should able block simple this?
the key press event filtering should done on dialog itself, because code handling forwarding of return , enter keys default button in qdialog::keypressevent.
void dialog::keypressevent(qkeyevent *evt) { if(evt->key() == qt::key_enter || evt->key() == qt::key_return) return; qdialog::keypressevent(evt); } or
thedialog−>installeventfilter(anotherclassobject); bool anotherclass::eventfilter(qobject *obj, qevent *evt) { if(evt->type() == qevent::keypress) { qkeyevent *keyevent = static_cast<qkeyevent*>(evt); if(keyevent->key() == qt::key_enter || keyevent->key() == qt::key_return ) return true; // mark event handled } return false; }
Comments
Post a Comment