JS8Call-Improved master
Loading...
Searching...
No Matches
LazyFillComboBox.h
1#ifndef LAZY_FILL_COMBO_BOX_HPP__
2#define LAZY_FILL_COMBO_BOX_HPP__
3
4#include <QComboBox>
5
6class QWidget;
7
8//
9// Class LazyFillComboBox
10//
11// QComboBox derivative that signals show and hide of the pop up list.
12//
13class LazyFillComboBox : public QComboBox {
14 Q_OBJECT
15
16 public:
17 Q_SIGNAL void about_to_show_popup();
18 Q_SIGNAL void popup_hidden();
19
20 explicit LazyFillComboBox(QWidget *parent = nullptr) : QComboBox{parent} {}
21
22#if QT_VERSION >= QT_VERSION_CHECK(5, 12, 0)
23 void showPopup() override {
24 Q_EMIT about_to_show_popup();
25 QComboBox::showPopup();
26 }
27
28 void hidePopup() override {
29 QComboBox::hidePopup();
30 Q_EMIT popup_hidden();
31 }
32#else
33 void mousePressEvent(QMouseEvent *e) override {
34 Q_EMIT about_to_show_popup();
35 QComboBox::mousePressEvent(e);
36 }
37
38 void mouseReleaseEvent(QMouseEvent *e) override {
39 QComboBox::mouseReleaseEvent(e);
40 Q_EMIT popup_hidden();
41 }
42#endif
43};
44
45#endif