如何在列表中的QWidget上保存绘制点?

时间:2014-08-21 13:00:34

标签: c++ qt qwidget qpainter

我是Qtcreator的新手,我试图在小部件上绘制一些点。使用我拥有的代码它只是工作正常我可以绘制尽可能多的点我想要的问题是,如果我用另一个窗口覆盖我的小部件,然后再次显示我的小部件比我只得到我画的最后一点。有些人可以告诉我如何解决这个问题,这样我就可以随时掌握所有的观点。

提前致谢

void MainWindow::mousePressEvent(QMouseEvent *e)
{
    point=e->pos();
    update();
}
void MainWindow::paintEvent(QPaintEvent *e)
{
    setAttribute(Qt::WA_OpaquePaintEvent);
    QPainter painter(this);
    QPen linepen(Qt::red);
    linepen.setCapStyle(Qt::RoundCap);
    linepen.setWidth(30);
    painter.setRenderHint(QPainter::Antialiasing,true);
    painter.setPen(linepen);
    painter.drawPoint(point);
}

1 个答案:

答案 0 :(得分:3)

void MainWindow::mousePressEvent(QMouseEvent *e)
{
    // points is a "QList<QPoint> points;"
    points.append(e->pos());
    update();
}

void MainWindow::paintEvent(QPaintEvent *e)
{
    setAttribute(Qt::WA_OpaquePaintEvent);
    QPainter painter(this);
    QPen linepen(Qt::red);
    linepen.setCapStyle(Qt::RoundCap);
    linepen.setWidth(30);
    painter.setRenderHint(QPainter::Antialiasing,true);
    painter.setPen(linepen);
    for (auto point : points) {
        painter.drawPoint(point);
    }
}