qt6.2.4 鼠标点击10次 画10个圆圈,
时间: 2024-02-17 22:03:47 浏览: 67
在上一个问题的基础上,我们可以使用一个容器来存储每次鼠标点击的位置点,然后在paintEvent函数中遍历容器,绘制每个圆圈。具体的实现步骤如下:
1. 在你的QWidget的子类中添加一个QVector<QPoint>类型的成员变量m_points,用于存储鼠标点击的位置点。
2. 在你的QWidget的子类中重载mousePressEvent函数,将每次鼠标点击的位置点加入到m_points容器中。
3. 在你的QWidget的子类中重载paintEvent函数,遍历m_points容器,使用QPainter在画布上绘制每个圆圈。
下面是一个示例代码:
```cpp
#include <QPainter>
#include <QWidget>
#include <QMouseEvent>
#include <QVector>
class MyWidget : public QWidget
{
public:
MyWidget(QWidget *parent = nullptr) : QWidget(parent) {}
protected:
void mousePressEvent(QMouseEvent *event) override
{
if (event->button() == Qt::LeftButton) {
m_points.append(event->pos());
update(); // 重绘窗口
}
}
void paintEvent(QPaintEvent *event) override
{
QPainter painter(this);
painter.setPen(Qt::black);
painter.setBrush(Qt::yellow);
for (const auto& point : m_points) {
painter.drawEllipse(point, 50, 50); // 绘制圆圈
}
}
private:
QVector<QPoint> m_points;
};
```
在这个示例中,我们使用QVector<QPoint>类型的容器m_points来存储每次鼠标点击的位置点。在每次鼠标点击时,我们将位置点加入到容器中,并调用update()函数来重绘窗口。在paintEvent函数中,我们遍历m_points容器,使用QPainter来绘制每个圆圈。
阅读全文