在我的应用程序中,我将子类化为QGraphicsWidget 在油漆中我画了一条笔宽为4的线 我重新实现了boundingRect()和shape() 但是每次点击鼠标右键都无法捕捉上下文菜单事件 有什么问题。(笔宽?)
//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;
}
答案 0 :(得分:0)
你也可以重新实现QWidget::mousePressEvent()
,检查是否只有rightMouseButton按下并调用你的方法,你将手动显示你的QMenu。