QMenu是一個Top-Level的構件,menu.exec(pos)這里的pos總是相對於屏幕的。
示例1: 向上彈出
1 void Dialog::on_btn_clicked() 2 { 3 QPoint pos; 4 pos.setX(0); 5 pos.setY(-menu->sizeHint().height()); 6 menu->exec(ui->btnOperator->mapToGlobal(pos)); 7 }
效果:

示例2:
1 void MainWindow::showOptionPopMenu() 2 { 3 this->setContextMenuPolicy(Qt::CustomContextMenu); 4 QMenu menu; 5 //添加菜單項,指定圖標、名稱、響應函數 6 menu.addAction(QIcon(":/Image/upgrade.png"), QStringLiteral("檢測升級"), this, SLOT(onCheckUpgradeAction())); 7 menu.addSeparator(); 8 menu.addAction(QIcon(":/Image/about.png"), QStringLiteral("關於軟件"), this, SLOT(onShowAboutAction())); 9 //在鼠標位置顯示 10 QPoint pos; 11 pos.setX(this->x() + ui.titleBar->width() - 143); 12 pos.setY(this->y() + ui.titleBar->height() - 10); 13 menu.exec(pos); //QCursor::pos() 14 }
效果:
