Solved How to show a custom popup for QComboBox
-
The documentation for showPopup and hidePopup seem very unclear to me.
The docs for
showPopup
say this:If you reimplement this function to show a custom pop-up, make sure you call hidePopup() to reset the internal state.
Where exactly do I call
QComboBox::hidePopup
? Do I do it insideshowPopup
? That just seems a little strange to me. The docs forhidePopup
tell me to callQComboBox::hidePopup
in the re-implemented function which makes perfect sense. Here's my code:void ComboBoxWidget::showPopup() { // ??? QComboBox::hidePopup(); assert(popup == nullptr); popup = new ComboBoxPopup{this}; } void ComboBoxWidget::hidePopup() { QComboBox::hidePopup(); delete popup; popup = nullptr; }
The problem is that
hidePopup
is never called so my popup is never closed. I must be doing something wrong. Uncommenting that line doesn't seem to help. -
Am I supposed to hide the popup manually? E.g. should I call hidePopup when the user clicks on an item in the popup? The popup isn't automatically hidden when the combo box loses focus so am I supposed to handle that myself too?
I have a finished popup that looks exactly how I want it to but I'm not sure how I'm supposed to hide it. It sounds trivial but I'm really not sure.
-
The "right way" probably doesn't matter for something this trivial so I'm just calling
hidePopup
when the checkbox loses focus and when an item in the popup is clicked.