#ifndef QMYCOMBOBOX_H #define QMYCOMBOBOX_H #include #include #include #include #include #include #include class QMyComboBox : public QComboBox { public: QMyComboBox(QWidget* parent = nullptr) : QComboBox(parent) {} ~QMyComboBox() {} protected: void showPopup() override { std::cout << "QMyComboBox::showPopup() - before lib code" << std::endl; QComboBox::showPopup(); std::cout << "QMyComboBox::showPopup() - after lib code" << std::endl; } void hidePopup() override { std::cout << "QMyComboBox::hidePopup() - before lib code" << std::endl; QComboBox::hidePopup(); std::cout << "QMyComboBox::hidePopup() - after lib code" << std::endl; } bool eventFilter(QObject *obj, QEvent *event) override { if(obj == view()->window()) { qDebug() << "QMyComboBox::eventFilter: Popup (view()->window()):" << event->type(); } if(event->type() == QEvent::ShortcutOverride) { QKeyEvent *keyEvent = static_cast(event); if((keyEvent->key() == Qt::Key_Select) || (keyEvent->key() == Qt::Key_F4)) { qDebug() << "QMyComboBox::eventFilter:" << event->type(); } } else if(event->type() == QEvent::MouseButtonRelease) { qDebug() << "QMyComboBox::eventFilter:" << event->type(); } return QComboBox::eventFilter(obj, event); } void mousePressEvent(QMouseEvent *e) override { LOG_XML << "QMyComboBox::mousePressEvent()"; QComboBox::mousePressEvent(e); } void mouseReleaseEvent(QMouseEvent *e) override { LOG_XML << "QMyComboBox::mouseReleaseEvent()"; QComboBox::mouseReleaseEvent(e); } void changeEvent(QEvent *e) override { LOG_XML << "QMyComboBox::changeEvent() " << e->type(); QComboBox::changeEvent(e); } void hideEvent(QHideEvent *e) override { LOG_XML << "QMyComboBox::hideEvent()"; QComboBox::hideEvent(e); } void keyPressEvent(QKeyEvent *e) override { LOG_XML << "QMyComboBox::keyPressEvent() " << e->type(); QComboBox::keyPressEvent(e); } }; #endif // QMYCOMBOBOX_H