我有一个QScrollArea,它是我最棒的滚动小部件的父亲。我喜欢在各种场合更新内容。
为此,我对paintEvent(QPaintEvent *)进行了重写。然后,每次我想要这样做时,我都会在小部件上调用update()。
问题: paintEvent()从未被调用过!
到目前为止,我在故障排除方面所做的尝试:
repaint()而不是update()。应该立即调用它。不幸的是没有。isVisible()和updatesEnabled测试有人知道下一步要查什么吗?是什么使could ()不调用paintEvent()呢?
发布于 2010-07-23 12:41:21
解决方案是从您的this->viewport()->repaint()派生类调用this->viewport()->update()或repaint(),而不是只调用repaint()或update()。
更多信息在Qt文档中提供
QWidget * QAbstractScrollArea::viewport () const返回viewport小部件。使用QScrollArea::widget()函数检索viewport小部件的内容。
由于我们在QAbstractScrollArea派生类中的内容将显示在viewport小部件中,因此调用viewport的更新或重新绘制来再次绘制数据(调用paintEvent )是有意义的。
https://stackoverflow.com/questions/2274512
复制相似问题