QT:paintEvent怎么不断刷新页面
时间: 2024-06-05 20:04:34 浏览: 144
在QT中,当需要不断刷新页面时,可以重写QWidget类中的paintEvent函数,并在函数中使用update或repaint函数来触发paintEvent的重绘。具体实现方式如下:
```
void MyWidget::paintEvent(QPaintEvent *event)
{
// 在此处编写绘图代码
QPainter painter(this);
painter.setPen(Qt::red);
painter.drawText(50, 50, "Hello World!");
// 调用update或repaint函数以触发重绘
update(); // 或者 repaint();
}
```
在上面的例子中,我们重写了QWidget类中的paintEvent函数,并在函数中使用QPainter对象进行绘图。接着,我们通过调用update或repaint函数来触发paintEvent的重绘。其中,update函数会尽可能快地触发paintEvent的重绘,而repaint函数会立即重绘窗口。
相关问题
huaban::huaban(QWidget *parent) : QWidget(parent) { nbrush = Qt::transparent; ncolor = Qt::black; nwidth = 1; stop_polygon = true; is_straight = false; setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); } void huaban::paintEvent(QPaintEvent*) { QPainter paint(this); paint.setBrush(Qt::white); paint.setPen(Qt::white); paint.drawRect(0, 0, size().width(), size().height()); foreach(Shape* shap, stack) { shap->paint(paint); } }为何直接点击屏幕时,会变黑
根据您提供的代码,绘图区域的背景颜色在 `paintEvent` 函数中被设置为白色 (`paint.setBrush(Qt::white)`)。然而,您在 `paintEvent` 函数中同时将绘图的画笔颜色也设置为白色 (`paint.setPen(Qt::white)`),这会导致绘制的形状与背景颜色相同,使其看起来好像是屏幕变黑了。
如果您希望绘制的形状有颜色,您可以将 `paint.setPen(Qt::white)` 修改为 `paint.setPen(ncolor)`,其中 `ncolor` 是您要设置的形状颜色变量。
修改后的代码如下所示:
```cpp
void huaban::paintEvent(QPaintEvent*)
{
QPainter paint(this);
paint.setBrush(Qt::white);
paint.setPen(ncolor); // 将绘制的画笔颜色设置为 ncolor
paint.drawRect(0, 0, size().width(), size().height());
foreach(Shape* shap, stack)
{
shap->paint(paint);
}
}
```
这样修改后,绘制的形状将使用您在 `ncolor` 变量中定义的颜色进行绘制,而不会与背景颜色相同。请确保在其他地方正确设置和更新 `ncolor` 变量,以便控制绘制形状的颜色。
MainWindow::paintEvent
MainWindow::paintEvent是一个在MainWindow类中定义的成员函数。它是一个重绘事件处理函数,用于绘制窗口中的图形。在这个函数中,我们可以使用QPainter对象来绘制各种基本图形,如线条、矩形、椭圆等。在这个函数中,你可以看到一个例子,使用QPainter的drawLine函数绘制了一条直线,起点坐标是(0, 0),终点坐标是(100, 100)。注意,这些坐标是相对于窗口的起点来确定的。
阅读全文