当它被其他窗口徘徊时,如何强制调用QWidget :: paintEvent()?

时间:2011-01-16 01:19:21

标签: qt qt4 widget paintevent

我遇到了一个问题: 我正在编写一个小部件,它显示当前日期的日期编号。它就像一个按钮,但它不是来自QPushButton类。仅来自QWidget。所以我重新实现了enterEvent()leaveEvent()mousePressEvent()mouseReleaseEvent()。我在这些方法中调用update(),小部件具有逼真的按钮行为(paintEvent()也重新实现)。但是当我更改系统日期并将该窗口小部件悬停在其他窗口时,我的窗口小部件不会调用paintEvent()并显示旧日期。只有当我将鼠标放在它上面时,小部件才会重新绘制它的内容。我猜有一个选项,它在悬停事件上绘制旧内容,以避免不必要的绘制事件。但我需要禁用它。试图设置许多属性(Qt::WidgetAttribute枚举)。但它没有帮助。

请帮助我(抱歉我的英语不好)。

1 个答案:

答案 0 :(得分:0)

我认为您应该找到一种方法来检测系统时间是否已更改,并在发生这种情况时调用update()。任何其他方法(如检测窗口的“悬停”或等待鼠标事件)都会导致更新发生得太晚。