Paintevent 画图的图像数据是一个变量,每次绘图时怎么动态绘画,在paintevent每次执行时,变量赋值重新赋值为初始值
时间: 2024-03-12 10:45:27 浏览: 49
painter动态绘图
如果你的绘图数据是一个变量,并且需要在paintEvent中动态绘制,可以将该变量定义在类的成员变量中,并在需要修改绘图数据的地方直接修改该成员变量的值,然后在paintEvent中使用该成员变量的值进行绘图。
例如,假设需要绘制一个可以动态改变颜色的矩形,可以定义一个成员变量来存储颜色信息:
```cpp
class MyWidget : public QWidget
{
Q_OBJECT
public:
MyWidget(QWidget *parent = nullptr);
protected:
void paintEvent(QPaintEvent *event) override;
private slots:
void onColorButtonClicked();
private:
QColor m_color; // 成员变量存储颜色信息
};
```
在需要修改颜色的槽函数中直接修改m_color成员变量的值:
```cpp
void MyWidget::onColorButtonClicked()
{
// 修改颜色信息
m_color = QColor(Qt::red);
// 触发重绘
update();
}
```
然后在paintEvent函数中使用m_color成员变量的值进行绘图:
```cpp
void MyWidget::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
// 设置画笔颜色
painter.setPen(QPen(m_color, 2));
// 绘制矩形
QRectF rect(50, 50, 100, 100);
painter.drawRect(rect);
}
```
这样,每次调用onColorButtonClicked槽函数修改颜色信息后,都会触发重绘,然后在paintEvent函数中使用最新的颜色信息进行绘图。
阅读全文