-
Bug
-
Resolution: Done
-
P3: Somewhat important
-
5.4.2, 5.5.0
-
Win8.1, Ubuntu 14.04
-
eadd7e9cfb4e0802aa9da63badc41c39fec219bb
In case you have a custom Widget in secondary hierarchy of a menu, no enter event is received. See attached screencasts.
Interesting: In Qt5.4 no enter and no leave events are received. In Qt5.5 no enter event, but to much leave events are received.
Source of demo
#include <QApplication>
#include <QMainWindow>
#include <QWidgetAction>
#include <QMenuBar>
#include <QMenu>
#include <QMouseEvent>
#include <QListWidget>
#include <QGridLayout>
class EnterLeaveWidget : public QWidget
{
public:
EnterLeaveWidget(QWidget* parent = nullptr) : QWidget(parent), m_enterEvents(0), m_leaveEvents(0), m_layout(this), m_list(this)
{
m_layout.setContentsMargins(0, 0, 0, 0);
m_layout.addWidget(&m_list);
}
void enterEvent(QEvent * event) override
{
m_enterEvents++;
m_list.addItem("Enter " + QString::number(m_enterEvents) + " Leaves: " + QString::number(m_leaveEvents));
m_list.scrollToBottom();
}
void leaveEvent(QEvent * event) override
{
m_leaveEvents++;
m_list.addItem("Enter " + QString::number(m_enterEvents) + " Leaves: " + QString::number(m_leaveEvents));
m_list.scrollToBottom();
}
protected:
int m_enterEvents;
int m_leaveEvents;
QGridLayout m_layout;
QListWidget m_list;
};
void addEnterLeaveWidgetAsAction(QMenu * menu)
{
QWidgetAction *widgetAction = new QWidgetAction(menu);
auto w = new EnterLeaveWidget();
w->setFixedSize(150, 150);
widgetAction->setDefaultWidget(w);
menu->addAction(widgetAction);
}
int main(int argc, char * argv[])
{
QApplication qapp(argc, argv);
QMainWindow mainWindow;
mainWindow.setFixedSize(300, 350);
auto mainMenu = mainWindow.menuBar()->addMenu("MainMenu");
addEnterLeaveWidgetAsAction(mainMenu);
auto subMenu = mainMenu->addMenu("SubMenu");
addEnterLeaveWidgetAsAction(subMenu);
mainWindow.show();
qapp.exec();
}
- resulted in
-
QTBUG-128453 App stops receiving touch events if the popup is dismissed on MacOS
-
- Open
-
| For Gerrit Dashboard: QTBUG-47515 | ||||||
|---|---|---|---|---|---|---|
| # | Subject | Branch | Project | Status | CR | V |
| 146891,17 | QtWidgets: Proper delivery of enter/leave event to context menus | 5.6 | qt/qtbase | Status: MERGED | -2 | 0 |