Вот код.
#include <QApplication>
#include <QMainWindow>
#include <QPushButton>
#include <QMenu>
#include <QMessageBox>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QMainWindow w;
auto pW = &w;
QPushButton* btShowMenu = new QPushButton("Some menu", pW);
QMenu* menu = new QMenu(pW);
auto lambdaMessage = [pW]() {
QMessageBox::information(pW, "Clicked!", "Clicked!");
};
for (int i = 0; i < 50; ++i) {
QAction* ac = menu->addAction("Menu item");
QObject::connect(ac, &QAction::triggered, lambdaMessage);
}
btShowMenu->setMenu(menu);
w.show();
return a.exec();
}
Перед нами QPushButton с навешенным на него меню. Меню огромное и не помещается ни сверху, ни снизу. При нажатии мышью на кнопку выскакивает меню. МЫШЬ НАЖАТА. При любом сдвиге, хоть на пиксель, в меню образуется курсор, и если пользователь отпустит мышь, вызывает пункт.
Как разглючить? Реорганизацию меню не предлагать (меню собирается программно).