Important: Please read the Qt Code of Conduct -

QComboBox: issue when used with eventFilter

  • I need to implement a QComboBox like widget that, when open, displays a list of checkable items. I would like the user to be able to check/uncheck more than one item before the QComboBox closes. I'm working with Qt 5.4.

    To that end, I subclassed QComboBox reimplementing eventFilter() that is attached to the QComboBox's view and to its viewport. This eventFilter() method aims at intercepting MousButtonRelease and FocusOut events so that hidePopup() is not invoked on MouseButtonRelease but rather on FocusOut event.

    This does not work. Actually, the eventFilter does not receive any event after showPopup is called and before hidePopup is except one: A FocusAboutToChange event which is received right after showPopup, when the QComboBoxListView is displayed.

    What is happening? What did I do wrong? I had a look at the QComboBox code and it also installs an eventFilter on both the view and its view port, intercepting the same events. As far as I saw, I install my eventFilter after QComboBox's. The doc says that mine should be called first.
    Is there a better way to do this?

    I also read a few posts on QComboBox, "this one": for instance. But this did not help for the purpose...

    Thanks a lot!

  • Lifetime Qt Champion

    Hi and welcome to devnet,

    You might be interested by "QxtCheckComboBox":

    Hope it helps

  • Hello,

    Thanks a lot. I'll have a look.

Log in to reply