qt - What is the signal for when a widget loses focus? -


in dialog, when tab key pressed, focus changes widget. in qt, there signal when widget loses focus? can use check if input valid or not? if not, can set focus , ask user re-input?

there's no signal if want know when widget has lost focus, override , reimplement void qwidget::focusoutevent(qfocusevent* event) in widget. called whenever widget has lost focus. give focus widget, use qwidget::setfocus(qt::focusreason).

to validate input in qlineedit or qcombobox can subclass qvalidator , implement own validator, or use 1 of existing subclasses, qintvalidator, qdoublevalidator, or qregexpvalidator. set validator qlineedit::setvalidator(const qvalidator*) , qcombobox::setvalidator(const qvalidator*) respectively.

if want validate contents of modal dialog box, 1 way override qdialog::exec() implementation this:

int mydialog::exec() {   while (true) {     if (qdialog::exec() == qdialog::rejected) {       return qdialog::rejected;     }     if (validate()) {       return qdialog::accepted;     }   } }  bool mydialog::validate() {   if (lineedit->text().isempty()) {     qmessagebox::critical(this, "invalid value", "the specified value not valid");     lineedit->setfocus();     lineedit->selectall();     return false;   }   return true; } 

it not allow user close dialog ok button or other button accepted role unless contents of dialog validated. in example assume dialog has qlineedit named lineedit , validate function make sure content not empty. if is, set focus qlineedit , show dialog again.


Comments

Popular posts from this blog

javascript - DIV "hiding" when changing dropdown value -

Does Firefox offer AppleScript support to get URL of windows? -

android - How to install packaged app on Firefox for mobile? -