Как заставить призвать Qwidget :: paintevent (), когда его зависают другим окном?
-
11-10-2019 - |
Вопрос
Я столкнулся с проблемой: я пишу виджет, который отображает номер текущей даты. Это как кнопка, но она не получена из QPushButton
учебный класс. Просто от QWidget
. Анкет Так что я переосмыслил enterEvent()
, leaveEvent()
, mousePressEvent()
, mouseReleaseEvent()
. Анкет Я звоню update()
Внутри эти методы и виджет имеет реалистичное поведение кнопок (paintEvent()
также переосмысливается). Но когда я меняю системную дату и параю этот виджет с другим окном, мой виджет не вызывает paintEvent()
и отображает старую дату. Только когда я ставлю мышью на нее, виджет перекрашивает его содержимое. Я предполагаю, что есть вариант, который рисует старое содержимое события на Hover, чтобы избежать ненужных событий краски. Но мне нужно отключить его. Пытался установить много атрибутов (Qt::WidgetAttribute
enum). Но это не помогает.
Пожалуйста, помогите мне (и извините за мой плохой английский).
Решение
Я думаю, вы должны найти способ обнаружить, что системное время изменилось и вызовет update()
Когда это произойдет. Любой другой метод (например, обнаружение «зависания» окна или ожидание события мыши), приведет к тому, что обновление произойдет слишком поздно.