Qt 当QWidget::paintEvent()被其他窗口悬停时,如何强制调用它?
我遇到了一个问题: 我正在编写一个小部件,它显示当前日期的天数。它就像一个按钮,但它不是从Qt 当QWidget::paintEvent()被其他窗口悬停时,如何强制调用它?,qt,qt4,widget,paintevent,Qt,Qt4,Widget,Paintevent,我遇到了一个问题: 我正在编写一个小部件,它显示当前日期的天数。它就像一个按钮,但它不是从QPushButton类派生的。仅从QWidget。因此,我重新实现了enterEvent(),leaveEvent(),mousePressEvent(),mousereleasevent()。我在这些方法中调用update(),小部件具有逼真的按钮行为(paintEvent()也被重新实现)。但当我更改系统日期并将该小部件悬停在其他窗口时,我的小部件不会调用paintEvent()并显示旧的日期。只有当
QPushButton
类派生的。仅从QWidget
。因此,我重新实现了enterEvent()
,leaveEvent()
,mousePressEvent()
,mousereleasevent()
。我在这些方法中调用update()
,小部件具有逼真的按钮行为(paintEvent()
也被重新实现)。但当我更改系统日期并将该小部件悬停在其他窗口时,我的小部件不会调用paintEvent()
并显示旧的日期。只有当我把鼠标放在它上面时,小部件才会重新绘制它的内容。我想有一个选项,可以在悬停事件上绘制旧内容,以避免不必要的绘制事件。但我需要禁用它。尝试设置多个属性(Qt::widgettribute
enum)。但这没有帮助
请帮帮我(为我糟糕的英语感到抱歉)。我认为您应该找到一种方法来检测系统时间是否已更改,并在发生这种情况时调用
update()
。任何其他方法(如检测窗口的“悬停”或等待鼠标事件)都会导致更新太晚。可能会更好。但是我不知道怎么做