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.

有帮助吗?

解决方案

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.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top