Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt 当QWidget::paintEvent()被其他窗口悬停时,如何强制调用它?_Qt_Qt4_Widget_Paintevent - Fatal编程技术网

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()
。任何其他方法(如检测窗口的“悬停”或等待鼠标事件)都会导致更新太晚。

可能会更好。但是我不知道怎么做