-1

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

但我真的不明白我们如何使“菜单”可见:这是 SLOT 方法:

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());
}

所以我看不到如何从这个简单的功能中弹出菜单?(“当这个方法被调用时,它会弹出一个菜单”)

谢谢

4

1 回答 1

2

正如QMenu(特别是QMenu.exec())的文档所说的那样有效?

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

弹出菜单,使动作动作在指定的全局位置 p。

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

if (QAction *action = menu.exec(QCursor::pos()))
于 2011-11-28T23:34:24.963 回答