c++ - 如何将绘制的点保存在列表中的 QWidget 上?

标签 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);
}

最佳答案

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);
    }
}

关于c++ - 如何将绘制的点保存在列表中的 QWidget 上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25427004/

相关文章:

c++ - 将整数乘以适当分数的快速方法,无需 float 或溢出

C++ 模板 : The static member in a global object is not initialized

c++ - deletelater() 是否也会删除与该对象关联的信号和槽?

c++ - 将 QLabel 添加到 QWidget

c++ - QListView 仅在 View 中显示单个项目

c++ - 使用键盘 : unintended side effects when pressing enter 将数据输入到 Qt GUI

c++ - 为什么我在删除 char* 时遇到内存异常

c++ - QWidgets可以添加到QWindow吗?

c++ - Qt - drawPolyline 和 drawLine 之间的区别

linux - 如何在Qt Creator中制作圆形按钮