2011-01-16 4 views
-1

問題が発生しました: 現在の日付の日番号を表示するウィジェットを作成しています。それはボタンのようですが、それはQPushButtonクラスから派生したものではありません。ちょうどQWidgetから。だから私はenterEvent()leaveEvent()mousePressEvent()mouseReleaseEvent()を再実装しました。これらのメソッド内でupdate()と呼び、ウィジェットは現実的なボタン動作をします(paintEvent()も再実装されています)。しかし、私はシステムの日付を変更し、他のウィンドウでそのウィジェットをホバーすると、私のウィジェットはpaintEvent()を呼び出して、古い日付を表示しません。私がマウスの上にマウスを置いたときだけ、ウィジェットは内容を再描画します。私は不要なペイントイベントを避けるためにホバーイベントの古い内容をペイントするオプションがあると思います。しかし、私はそれを無効にする必要があります。多くの属性を設定しようとしました(Qt::WidgetAttribute列挙型)。しかし、それは役に立たない。QWidget :: paintEvent()が他のウィンドウにホバリングされたときに強制的に呼び出す方法は?

私を助けてください(私の悪い英語のために申し訳ありません)。

答えて

0

システム時刻が変更されたことを検出し、そのときにupdate()に電話する方法を見つけるべきだと思います。その他の方法(ウィンドウの「ホバリング」の検出やマウスイベントの待機など)により、更新が遅すぎることがあります。

+0

可能性がさらに高いです。しかし、それを作る方法は考えていない –

関連する問題