Как заставить призвать Qwidget :: paintevent (), когда его зависают другим окном?

StackOverflow https://stackoverflow.com/questions/4703219

  •  11-10-2019
  •  | 
  •  

Вопрос

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

Пожалуйста, помогите мне (и извините за мой плохой английский).

Это было полезно?

Решение

Я думаю, вы должны найти способ обнаружить, что системное время изменилось и вызовет update() Когда это произойдет. Любой другой метод (например, обнаружение «зависания» окна или ожидание события мыши), приведет к тому, что обновление произойдет слишком поздно.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top