Qt用菜单栏填充上下文菜单

时间:2016-01-25 20:10:00

标签: c++ qt

我正在QWidget上实施右键单击上下文菜单。我想知道是否有办法让这个菜单继承复制或以某种方式 show MainWindow中的元素' s ui->menubar

2 个答案:

答案 0 :(得分:0)

Qt文档 - >菜单示例:In particular, implementing a right-click context menu on a QWidget
代码的主要部分:

void MainWindow::contextMenuEvent(QContextMenuEvent *event)
{
    QMenu menu(this);
    menu.addAction(cutAct);
    menu.addAction(copyAct);
    menu.addAction(pasteAct);
    menu.exec(event->globalPos());
}

答案 1 :(得分:0)

我现在有一个答案,正确地做我想要的。可能会更好,但相当有效和浓缩:

void MainWindow::customContextMenu(const QPoint &posa) {
    QMenu contextMenu;
    QPoint globalPos = ui->widget->mapToGlobal(posa);
    QList<QMenu*> list = ui->menubar->findChildren<QMenu*>();
    for (int i=0; i<list.size(); i++) {
        contextMenu.addMenu(list.at(i));
    }
    contextMenu.exec(globalPos);
}