come si suppone che il menu da spuntato - Qt
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
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()))