Мне надобно узнать, когда было вызвано меню QComboBox и когда оно скрылось (эмитнуть сигналы). Унаследовался, чтобы получить доступ к евентам, но нужный мне не вычислил, при перехвате всех евентов на вызове меню падает программа (если не перехватывать - не падает), попытка найти нужный в списке успехом не увенчалась.
Код, что есть:
class HoverableComboBox : public QComboBox
{
Q_OBJECT
public:
HoverableComboBox() { this->installEventFilter(this); }
/*~HoverableComboBox();*/
signals:
void say(QString string);
private:
void focused(bool state)
{
emit say(QString("I'm %1, my focus state is %2").arg(this->objectName()).arg(state));
}
public:
bool eventFilter(QObject * object, QEvent * event)
{
if (object == this && event->type() == QEvent::KeyPress)
return true;
if (object == this && event->type() == QEvent::FocusIn)
focused(true);
if (object == this && event->type() == QEvent::FocusOut)
focused(false);
if (object == this && event->type() == QEvent::ChildRemoved)
emit say(QString("I'm %1, and I have message %2").arg(this->objectName()).arg(event->type()));
return false;
}
void paintEvent(QPaintEvent * e)
{
QComboBox::paintEvent(e);
}
};