2010-06-10 2 views
2

В моем приложении I подкласс QGraphicsWidget
В краске я рисую линию с шириной пера 4.
I переписана boundingRect() и формой().
Но я не могу поймать контекстное меню каждый раз, когда я нажимаю правую кнопку мыши.
чем проблема. (Pen Width?)контекста событие меню с QGraphicsWidget

//Sample code for boundingRect() and shape() 
    QRectF boundingRect() const 
    { 
    qreal rectLeft = x1 < x2 ? x1 : x2; 
    qreal rectTop = y1 < y2 ? y1 : y2; 
    qreal rectWidth = (x1 - x2) != 0 ? abs(x1-x2) : 4; 
    qreal rectHeight = (y1 - y2) != 0 ? abs(y1 -y2) : 4; 

    return QRectF(rectLeft,rectTop,rectWidth,rectHeigt); 
    } 

    QPainterPath shape() 
    { 
    QPainterPath path; 
    path.addRect(boundingRect()); 
    return path; 
    } 
+2

привет, вы объект QGraphicView прозрачен? Где вы реализуете mouceClickEvent? Дайте мне немного больше информации. – cnebrera

+1

cnebrera прав, ваш код не показывает код, связанный с обработкой событий мыши. Будьте немного более конкретными. Afaik, вам нужно переопределить 'QWidget :: contextMenuEvent'. – mefiX

ответ

0

Вы также можете переопределить QWidget::mousePressEvent(), проверьте, если только rightMouseButton, как нажата и вызвать ваш метод, в котором будет отображаться ваш QMenu вручную.

Смежные вопросы