How to force calling of QWidget::paintEvent() when its hovered by other window?
I have a problem:
I'm 开发者_如何学Pythoncreating a widget which displays current date's day number. It's like a button, but it's not derived from QPushButton
class. Just from QWidget
. So I've reimplemented enterEvent()
, leaveEvent()
, mousePressEvent()
, mouseReleaseEvent()
. I do call update()
inside these methods and widget has realistic button behavior (paintEvent()
is reimplemented also).
But when I change system date and hover that widget with other window, my widget doesn't get paintEvent()
and the old date is displayed. Only when I place mouse over it, widget repaints it's contents.
I guess there is a feature (like buffering) which paints old contents on hovering with other window to avoid unnecessary recalculations. But I need to disable it. Tried to set many attributes (the Qt::WidgetAttribute
enum). But it doesn't work.
I think you should find a way to detect that the system time has changed and call update()
when that happens. Any other method (like detecting the "hovering" of a window or waiting for a mouse event) will cause the update to occur too late.
精彩评论