我正在阅读有关QT的书,有一个有关如何弹出历史记录菜单的示例,文本说:“当调用此方法时,它会弹出一个菜单,其项目与用户访问的网页相对应”,

但是我真的看不到我们如何使“菜单”可见:这是插槽方法:

void BrowerWindow::popupHistoryMenu()
{
    QMenu menu;
    …
    QListIterator<QWebHistoryItem> i(webView->history()->items());
    i.toBack();
    while(i.hasPrevious() && … )
    {
        const QWebHistoryItem & item = i.previous();
        QString title = ...
        QAction *action = new QAction(item.icon(), title, &menu);
        action->setData(item.url());
        menu.addAction(action);
    }
    AQP::accelerateMenu(&menu);
    if (QAction *action = menu.exec(QCursor::pos()))
        webView->load(action->data().toUrl());
}

因此,我看不出如何从该简单功能中弹出菜单? (“调用此方法时,它会弹出菜单”)

谢谢

有帮助吗?

解决方案

完全像文档 QMenu (具体来说, QMenu.exec())说它有效吗?

http://doc.qt.io/qt-5/qmenu.html#exec-2

弹出菜单,以便动作动作将在指定的全局位置p处。

您发布的代码中的相关行:

if (QAction *action = menu.exec(QCursor::pos()))
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top