2016-03-16 5 views
0

Я работаю над проектом Qt, и я хочу сделать причудливый контекстный пирог, щелкнув правой кнопкой мыши ... меню.QT, предварительный GUI, причудливое контекстное меню

, как в изображении

enter image description here сильфона

Я использую QGraphicsItem, QGraphicsScene, QGraphicsView и заходящего фон прозрачным путем

setAttribute(Qt::WA_TranslucentBackground); 
setStyleSheet("background: transparent ;border: none;"); 

, что я хочу достичь, когда пользователь hove над кругом, и это подменю, тогда появится меню пирога, но

Проблема в следующем:

К сожалению, события мыши не будут испускать, если он не коснется твердого пикселя из моего QGraphicsView, поэтому, когда курсор мыши переместится в подменю, появится красный пирог, но как только я перейду к щелчку по сектору из пирога, исчезнет, ​​потому что я больше не вишу над оранжевым кругом.

любая другая хорошая идея или решение, так что я могу получить события мыши над моей прозрачной области (я вычислит расстояние от оранжевого круга, и если мышь IN RANGE пирог будет оставаться показано)

спасибо.

+0

ваше контекстное меню с помощью QMenu и вы кладете графическое представление на QMenu ? Или контекстное меню находится в графическом представлении? – Apin

+0

Нет, я вообще не использую QMenu, просто QGraphicsView и QWidget и класс, унаследованный от QGraphicsItem, которые представляют собой элемент, который можно щелкнуть (круг на изображении). –

ответ

0

Я думаю, что вы можете сделать это:

  • Hover оранжевый один и подменю появляется.
  • Сохраните подменю, пока ваша мышь ничего не наведет или наведет другое меню. Когда вы перемещаете мышь в подменю -> это означает, что вы навешиваете вещь, поэтому подменю все равно будет. Если ваши подменю все одинаковы, поэтому, когда вы наведете еще один круг, просто переместите подменю и, возможно, установите некоторое свойство.
  • Убедитесь, что ваш оранжевый круг и подменю параллелизм, так что перемещение мыши от оранжевого к подменю не будет вызывать «не парить ничего»