我是 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/