从Qt4移植到Qt5,Qt::WA_PaintOutsidePaintEvent不再存在



当从Qt4移植到Qt5时,有一个类GraphWidget,它继承自类QWidget。

m_plot = new QwtPlot(this);  
ui->verticalLayout->addWidget(m_plot);
……
m_directPainter = new QwtPlotDirectPainter(m_plot->canvas());  
m_plot->canvas()->setAttribute(Qt::WA_PaintOutsidePaintEvent, true);
……
m_directPainter.drawSeries(……);

属性Qt::WA_PaintOutsidePaintEvent已不存在。如何使m_directPainter正常工作?

正如我从Qt5文档中了解到的,我是否应该实现paintEvent()函数,并在那里调用painter

Qt::WA_PaintOutsidePaintEvent的引入是为了允许将Qt3程序移植到Qt4。Qt4小部件应该只从paintEvent()绘制,因此在Qt5中删除了属性(好主意!(。因此,您应该将所有绘制代码转移到派生的paintEvent()方法中。

Qt::WA_PaintOutsidePaintEvent仅与已随Qt5移除的X11绘制引擎结合使用时具有效果。因此,您可以简单地删除该行,因为它对Qt5(或Qt4,当不运行本地图形系统时(没有影响。

如果没有此标志,QwtPlotDirectPainter使用效率稍低的路径进行增量绘制,但也避免了在将代码移动到paintEvent中时必须进行的完全重新绘制。

相关内容

  • 没有找到相关文章

最新更新