Я нашел исправление для этого, которое, я не думаю, будет зависеть от системы.
В моем конкретном случае использовалось mouseReleaseEvent, чтобы перехватывать события и использовать их самостоятельно. Я не получил эти события.
На всех дочерних виджетах виджета, которые я хочу обработать, я добавил к определению класса:
protected:
void mouseReleaseEvent(QMouseEvent *event) {event->ignore();}
Это переопределяет реализацию по умолчанию для контекстных меню и отправляет mouseReleaseEvent обратно в родительскую цепочку, как это делается для других кнопок мыши.
http://doc.qt.io/qt-5/qevent.html#ignore
Это показывает, что он, вероятно, будет распространяться на родительский виджет. Как указывает ссылка, это исправило это для меня в Qt 5.9, но я думаю, что оно должно работать практически для всех версий.
(я знаю, что этому вопросу буквально 7 лет, но он не содержит исправления, которое, я думаю, было бы лучшим, и отображается как результат 2 в Google (qt не получает событие отпускания мыши при щелчке правой кнопкой мыши) Поэтому я думаю, что это заслуживает актуального ответа.)