我创建了一个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不是每时每刻在调用的,只有当你的界面重绘时才有用