Question

A am using QComboBox derived class to show my items. My combo box is read only. But how can I catch the event when popup view of combo box closes?.
For example, when user clicks a mouse button somewhere out of my combo box?
Thank you very much in advance.

Was it helpful?

Solution

What for do you want this event? If the QComboBox closes without selection nothing changed. The signals given will only be activated when a selection has been made.

If you insist on reading a "close-event", you could subclass focusOutEvent(QFocusEvent*) or use an event handler for the focus out event and emit a custom signal. Eventually you want to have a boolean flag set on hadEditFocus() before, so you can see if the dropdown would be opened.

Edit: Eventually it would be easier to subclass and reimplement showPopup() and hidePopup() as:

void MyClass::showPopup() 
{
  QComboBox::showPopup();
  emit signalPopupShown();
}

void MyClass::hidePopup()
{
  QComboBox::hidePopup();
  emit signalPopupHidden();
}

but I am not sure if hidePopup() gets called on focus-loose.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top