Wie zu erzwingen Aufruf von QWidget :: paintEventO (), wenn sein von anderen Fenstern schwebt?
-
11-10-2019 - |
Frage
Ich habe ein Problem aufgetreten:
Ich schreibe ein Widget, das aktuelle Tagesdatum Zahl anzeigt. Es ist wie eine Taste, aber es ist nicht von QPushButton
Klasse abgeleitet. Nur von QWidget
. So reimplementiert ich enterEvent()
, leaveEvent()
, mousePressEvent()
, mouseReleaseEvent()
. Ich nenne update()
innerhalb dieser Methoden und hat Widget realistische Schaltfläche Verhalten (paintEvent()
ist auch neu implementiert). Aber wenn ich das Systemdatum ändern und Hover des Widget mit anderen Fenstern, mein Widget ruft nicht paintEvent()
und zeigen altes Datum. Erst wenn ich die Maus legen darüber, widget repaints seinen Inhalt. Ich denke, es ist eine Option, die alten Inhalte auf Hover Veranstaltung malt unnötige Farbe Ereignisse zu vermeiden. Aber ich brauche sie zu deaktivieren. Versuchte zu setzen viele Attribute (Qt::WidgetAttribute
enum). Aber es macht hilft nicht.
Bitte, hilf mir (und sorry für mein schlechtes Englisch).
Lösung
Ich glaube, Sie einen Weg finden, sollten zu erkennen, dass die Systemzeit geändert und Call update()
wenn das passiert. Jedes andere Verfahren (wie Erfassen des „Schweben“ eines Fensters oder wartet auf eine Maus-Ereignis) bewirkt, dass das Update zu spät kommen.