我正在读一本关于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());
}
所以我看不出如何从这个简单的功能中弹出菜单? (“当调用此方法时,它会弹出一个菜单”)
由于
答案 0 :(得分:2)
正如QMenu
(具体而言,QMenu.exec()
)的文档说它有效吗?
http://doc.qt.io/qt-5/qmenu.html#exec-2
弹出菜单,以便操作操作位于指定的全局位置p。
您发布的代码中的相关行:
if (QAction *action = menu.exec(QCursor::pos()))