Wie zu erzwingen Aufruf von QWidget :: paintEventO (), wenn sein von anderen Fenstern schwebt?

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

  •  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).

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top