【发布时间】:2017-04-12 20:11:41
【问题描述】:
我有一个QFrame,用于绘制一些矩形来表示一天中的某些时间段,例如,用户睡觉的时间段。
为此,我覆盖了paintEvent(QPaintEvent *) 函数,并使用QPainter 绘制矩形。
工作正常,问题是paintEvent(QPaintEvent *)函数被Qt自动调用多次以重绘QFrame,并且消耗太多CPU。其实我只需要重绘几次(通过手动调用重绘函数)。
有什么方法可以避免QFrame 自动重绘自身?
提前致谢
我使用的是 Qt 5.3
【问题讨论】:
-
金光闪闪的猜测:将
if (anythinghasChanged){...}添加到您的paintEvent() -
@tobi303 我已经尝试过了,但它不起作用,我认为
QFrame已被删除(自动)并且不再重新绘制。 -
CPU 过多是多少?如果真的是这样的话,也许你应该找出为什么它会不断重绘
-
正如我在 Windows 任务管理器中看到的,它仅在重绘过程中使用了大约 40% 的 CPU。
标签: c++ qt paintevent qframe