2011-01-16 6 views
-1

Ich bin ein Problem aufgetreten: Ich schreibe ein Widget, das aktuelle Tagesnummer anzeigt. Es ist wie eine Schaltfläche, aber es ist nicht von QPushButton Klasse abgeleitet. Nur von QWidget. Also habe ich enterEvent(), leaveEvent(), mousePressEvent(), mouseReleaseEvent() re-implementiert. Ich rufe update() innerhalb dieser Methoden und Widget hat realistische Schaltfläche Verhalten (paintEvent() wird auch neu implementiert). Aber wenn ich das Systemdatum ändere und das Widget mit einem anderen Fenster schwinge, ruft mein Widget nicht paintEvent() auf und zeigt das alte Datum an. Nur wenn ich die Maus darüber bewege, überstreicht das Widget seinen Inhalt. Ich denke, es gibt eine Option, die alte Inhalte im Hover-Event malt, um unnötige Paint-Events zu vermeiden. Aber ich muss es deaktivieren. Versucht, viele Attribute (Qt::WidgetAttribute enum) zu setzen. Aber es hilft nicht.Wie erzwinge das Aufrufen von QWidget :: paintEvent(), wenn es von einem anderen Fenster verschoben wird?

Bitte, hilf mir (und Entschuldigung für mein schlechtes Englisch).

Antwort

0

Ich denke, Sie sollten einen Weg finden, um zu erkennen, dass die Systemzeit sich geändert hat und rufen Sie update(), wenn das passiert. Jede andere Methode (z. B. das "Schweben" eines Fensters oder das Warten auf ein Mausereignis) führt dazu, dass das Update zu spät erfolgt.

+0

Möglich wäre es noch besser. Aber habe keine Ahnung, wie man es macht –

Verwandte Themen