首页 > 解决方案 > 从 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吗?

标签: qtqt5qwtsetattributepaintevent

解决方案


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


推荐阅读