Предполагая, что вы контролируете, когда появляется всплывающее меню, вам нужно использовать функцию-член indexAt (QPoint) , чтобы определить, над каким элементом мыши находится курсор.
Если вы в настоящий момент не контролируете, когда появляется меню, вам нужно установить contextMenuPolicy представления на то, что даст вам контроль над ним.
Например, если вы создаете подкласс и переопределяете contextMenuEvent , реализация может выглядеть примерно так:
void MyView::contextMenuEvent ( QContextMenuEvent * event )
{
QModelIndex index = indexAt(event->pos());
if (index.data(Qt::UserRole + NEEDS_CONTEXT_MENU_ROLE_OFFSET).toBool())
// display context menu
else
// don't display context menu
}
Вы также можете установить обработчик событий , чтобы избежать создания подклассов.