Domanda

Sto leggendo un libro su Qt, c'è un esempio su come apparire il menu di storia, il testo dice "quando viene richiamato questo metodo si apre un menu a cui voci corrispondono alle pagine web che l'utente ha visitato ",

, ma io non vedo proprio come noi facciamo il "menu" visibile: ecco il metodo 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());
}

Quindi, non vedo come il menu può essere spuntato da quel semplice funzione? ( "Quando questo metodo viene richiamato si apre un menu")

Grazie

È stato utile?

Soluzione

Esattamente come la documentazione per QMenu (in particolare, QMenu.exec()) dicono che funziona?

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

Si apre il menu in modo che l'azione azione sarà alla specificato Global Position p.

relativa riga in codice che avete inviato:

if (QAction *action = menu.exec(QCursor::pos()))
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top