我在paintEvent
painter.drawPie(rect, angle*16, 45*16);
但在绘制饼图之前,我想知道当前鼠标位置是否位于饼图区域之下。
鼠标跟踪功能已启用。我可以获得mouseEvents。那边没问题。但是,如果要知道这个点是否存在于馅饼中,那么数学是什么?
答案 0 :(得分:0)
我没试过这个,但你可以尝试将两个QPainterPaths(一个三角形和一个圆圈)相交以获得你的饼段的QPainterPath,然后以鼠标位置为参数调用QPainterPath :: contains(QPointF&)
现在我写这个,检查可能很容易实现:如果点在圆圈内和三角形内部,那么它就在馅饼内部。这两个子测试都很容易实现。
答案 1 :(得分:0)
令人遗憾的是,QPainterPath没有addPie()函数。但是,您可以使用Qt的QPainter :: drawPie()实现作为参考:
http://qt.gitorious.org/qt/qt/blobs/4.7/src/gui/painting/qpainter.cpp#line4439
基本上你可以像创建QPainterPath那样创建QPainterPath并在其上调用contains()。