这个demo主要使用QPainter实现重绘widgets和windows,这里面有些差异
可以参考下面的文章
QWindow重绘、避免闪烁
C++跨平台开发框架Qt示例:栅格窗口示例
主要学到的类和事件
1-QBackingStore
2-exposeEvent
重绘Qwidget很简单,windows会复杂一些,都是对事件的重写
exposeEvent干啥用的,其实注释一下它的实现就会发现,他是检测窗口是否已经显示,如果没有该进行哪些操作。比如这里注释掉这一行
void RasterWindow::exposeEvent(QExposeEvent *)
{
if (isExposed()) {
//renderNow();
}
}
可以体会一下
m_backingStore类是用于windows窗口绘制的,其他没啥,来张图