最佳可变Qt画布的方法

4

如何在Qt中创建具有高变化频率的“canvas”?

目前,我有一个主应用程序窗口(QWidget),在其中创建了一个QPixmap并将其设置为QLabel:

QPixmap *canvas = new QPixmap(500, 500);
QLabel *area = new QLabel(this);
area->setPixmap(canvas);

问题在于我必须在每次更改像素图后调用area->setPixmap(canvas);,以便它可以显示(我估计通常每秒会有几个更改)。这种方式可行吗?还是有更好/更快/更有效的解决方案?

你在画什么? - peppe
@peppe 大部分是文本。 - Martin Heralecký
1
一个带有几个QGraphicsItems的QGraphicsScene可能更有意义,特别是如果它们是增量变化而不是每次更新都改变所有内容。 - PeterT
2
你可以尝试继承QWidget并重写paintEvent(QPaintEvent *)方法,使用QPainter(this)来绘制你需要的任何内容。(只需在需要显示新版本时调用update(),paintEvent()将会尽快再次被调用) - Jeremy Friesner
1个回答

2

PeterT和Jeremy都有很好的解决方案。哪个最好取决于您的需求。

如果您正在移动物品并更改它们,请使用QGraphicsScene存储要显示和轻松操作的数据。使用QGraphicsView显示结果。

如果您已经在其他地方作为QPixmap进行渲染,并且只想绘制结果,则可以通过子类化QWidget,并在paintEvent中使用QPainter来简化操作。但是记得调用update()


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接