Вопрос

Я читаю книгу о 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()))
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top