我有一个QScrollArea,它是一个很棒的滚动小部件.我喜欢在各种场合对内容进行更新.
为此,我做了一个覆盖paintEvent(QPaintEvent *).然后,每当我想要它完成时,我就会调用update()小部件.
问题: paintEvent()这个从未被调用过!
到目前为止我在故障排除中尝试过的
repaint()而不是update().应该立即打电话.不幸的是没有.isVisible()和updatesEnabled有人知道接下来要检查什么?什么可以使repaint()不调用paintEvent()?
小智 25
解决方案是调用this->viewport()->repaint()或this->viewport()->update()来自QAbstractScrollArea派生类,而不仅仅是repaint()或update().
更多信息在Qt文档中给出:
QWidget * QAbstractScrollArea::viewport () const返回视口窗口小部件.使用该
QScrollArea::widget()函数可以检索视口窗口小部件的内容.
由于我们QAbstractScrollArea派生类中的内容将显示在视口窗口小部件中,因此调用视口窗口小部件的更新或重新绘制以再次绘制我们的数据(有我们的paintEvent调用)是有意义的.