Как заставить вызов QWidget :: paintEvent (), когда он зависает в другом окне? - PullRequest
0 голосов
/ 16 января 2011

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

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

1 Ответ

0 голосов
/ 16 января 2011

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

...