qt QPainterPath 如何判断点是否在其中

我创建了一个QPainterPath对象,并画了一条线,我用鼠标点击这条线,如何判断是否点中呢?

 

我要判断这个点是否再路径内,但是我用bool contains(const QPointF &pt) const;这个函数根本无法获取到准确判断,它一直给我返回false。

后来我想这个路径压根就没设置线宽,如何来判断点是否再路径上呢?

请大家告诉我qt  QPainterPath 如何判断点是否在其中

请大家告诉我qt  QPainterPath 如何判断点是否在其中

判断点的存在就是用bool contains(const QPointF &pt) const函数,至于返回错误,你可以查看你的鼠标点击位置的坐标是否正确,是相对坐标还是决定坐标!望采纳!

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

个人思考的一种解决方案,希望能交流一下探寻更好的解决方案。https://blog.csdn.net/qq_42816652/article/details/118726438

void MainWindow::paintEvent(QPaintEvent *)
{   
     QPainterPath path;
     path.addRect(20, 20, 60, 60);

     path.moveTo(0, 0);
     path.cubicTo(99, 0,  50, 50,  99, 99);
     path.cubicTo(0, 99,  50, 50,  0, 0);

     QPainter painter(this);
     painter.fillRect(0, 0, 100, 100, Qt::white);
     painter.setPen(QPen(QColor(79, 106, 25), 1, Qt::SolidLine,
                         Qt::FlatCap, Qt::MiterJoin));
     painter.setBrush(QColor(122, 163, 39));
     painter.drawPath(path);

     qDebug()<< path.contains(m_MousePos)<<m_MousePos;
}

void MainWindow::mousePressEvent(QMouseEvent *event)
{
    if (event->button() == Qt::LeftButton || event->button() == Qt::RightButton)
    {
        m_MousePos=event->pos();
    }
}
paintEvent不是每时每刻在调用的,只有当你的界面重绘时才有用