Как должно быть выскочено меню - QT
Вопрос
Я читаю книгу о 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
Выскакивает меню, чтобы действие было на указанной глобальной позиции с.
Соответствующая строка в опубликованном вами коде:
if (QAction *action = menu.exec(QCursor::pos()))
Не связан с StackOverflow