Есть две вещи, которые вы можете сделать для повышения скорости:
1 - itemAt (pos) является дорогостоящим, и вы делаете это дважды, один в событии и один в showContextMenu.Из того, что я понял из вашего кода, вам не нужен элемент в событии, только в showMenu.
2 - Создание меню, которое вы делаете, стоит дорого: все действия имеют растровые изображения.это выделяет память для QPixmap, загружает, выполняет, создает дампы.Поскольку вы сказали нам, что вы используете около 40 действий (и действительно, это слишком много для меню), это может дорого обойтись.
Мой совет: создайте класс для своего меню, создайте один экземпляр этого, добавьте установщик для текущего QGraphicsObject, над которым будет работать ваше меню, и всегда используйте этот один экземпляр.