-
Bug
-
Resolution: Unresolved
-
P4: Low
-
None
-
6.8
-
None
In the following example, long-pressing the background of the QMainWindow doesn't result in a context menu being displayed:
#include <QtWidgets> int main(int argc, char *argv[]) { QApplication app(argc, argv); QMainWindow mainWindow; QWidget *centralWidget = new QWidget; auto createLayout = [&mainWindow](QWidget *parent) -> QBoxLayout* { if (mainWindow.screen()->primaryOrientation() == Qt::LandscapeOrientation) return new QHBoxLayout(parent); return new QVBoxLayout(parent); }; QBoxLayout *mainLayout = createLayout(centralWidget); centralWidget->setLayout(mainLayout); // Set up the menu bar. auto *menuBarMenu = new QMenu("Menu bar menu", mainWindow.menuBar()); QAction action1("Menu item 1", centralWidget); QAction action2("Menu item 2", centralWidget); QAction action3("Menu item 3", centralWidget); menuBarMenu->addAction(&action1); menuBarMenu->addAction(&action2); menuBarMenu->addAction(&action3); mainWindow.menuBar()->addMenu(menuBarMenu); // Set up the context menu. QMenu contextMenu("Context menu", centralWidget); contextMenu.addAction(&action1); contextMenu.addAction(&action2); contextMenu.addAction(&action3); mainWindow.setContextMenuPolicy(Qt::CustomContextMenu); QObject::connect(&mainWindow, &QWidget::customContextMenuRequested, &mainWindow, [&contextMenu, &mainWindow](const QPoint &pos) { contextMenu.exec(mainWindow.mapToGlobal(pos)); }); // Useful for opening the menu on systems that apparently don't emit customContextMenuRequested, // like Android: https://bugreports.qt.io/browse/QTBUG-122732 auto *openContextMenuButton = new QPushButton("Open", centralWidget); QObject::connect(openContextMenuButton, &QPushButton::clicked, [&contextMenu, &mainWindow, openContextMenuButton](){ contextMenu.move(mainWindow.geometry().center()); contextMenu.show(); }); mainLayout->addWidget(openContextMenuButton); mainWindow.setCentralWidget(centralWidget); mainWindow.resize(400, 400); mainWindow.show(); return app.exec(); }
The same issue has been brought up elsewhere:
- https://forum.qt.io/topic/54342/custom-context-menu-not-working-on-android
- https://forum.qt.io/topic/32648/android-touch-supporting/13
If this shouldn't be supported, the limitation should be documented.