qt已知点坐标画图,不在paintevent中
时间: 2024-03-10 09:49:31 浏览: 67
Qt+update函数+paintEvent事件
5星 · 资源好评率100%
如果你已知点的坐标,可以在QWidget的派生类中重载mousePressEvent方法,获取鼠标点击时的坐标点。然后在该派生类中再添加一个public的绘图函数,用来绘制你想要的图形,例如:
```cpp
class MyWidget : public QWidget
{
public:
MyWidget(QWidget *parent = nullptr);
void paintEvent(QPaintEvent *event) override;
void mousePressEvent(QMouseEvent *event) override;
void drawPoint(QPoint point); // 添加的绘图函数
private:
QList<QPoint> m_points; // 已知点的坐标集合
};
MyWidget::MyWidget(QWidget *parent)
: QWidget(parent)
{
// 初始化已知点坐标
m_points.append(QPoint(100, 100));
m_points.append(QPoint(200, 200));
m_points.append(QPoint(300, 100));
}
void MyWidget::paintEvent(QPaintEvent *event)
{
// 这里可以绘制一些其他的元素
// ...
// 绘制已知点
QPainter painter(this);
painter.setPen(Qt::red);
for (const auto &point : m_points) {
painter.drawPoint(point);
}
}
void MyWidget::mousePressEvent(QMouseEvent *event)
{
drawPoint(event->pos()); // 鼠标点击时绘制一个点
}
void MyWidget::drawPoint(QPoint point)
{
// 绘制一个点
QPainter painter(this);
painter.setPen(Qt::blue);
painter.drawPoint(point);
}
```
在上述代码中,我们定义了一个绘图函数`drawPoint`,用来绘制一个点,然后在重载的`mousePressEvent`方法中,获取鼠标点击时的坐标点,并调用`drawPoint`函数进行绘制。在重载的`paintEvent`方法中,我们可以绘制一些其他的元素,同时也绘制已知的点。
阅读全文