web-dev-qa-db-ja.com

QWidgetの更新

この問題は何度も発生しています。

widget.show()の後にQWidgetの一部のプロパティを変更すると、ウィジェットが更新されません。ほとんどの場合、マウスをクリックするか、マウスがウィジェットから出たり入ったりすると、ウィジェットが更新されます。しかし、マウスを離れると、それだけでは更新されません。

これまでは、次のようにして対処することができました。

widget.hide()
widget.show()

しかし、これは非常に汚い修正です。ウィジェットを更新するようにpythonに指示するより良い方法はありますか?

ありがとうございました。

12
Olivier Giniaux

ウィジェットを更新するには、ウィジェットをrepaint()する必要がありますが、repaint()を直接呼び出すのはあまり良い方法ではないため、以下を試してください。

widget.update()

ドキュメントから:

この関数はすぐには再描画されません。代わりに、Qtがメインイベントループに戻ったときに、Paintイベントをスケジュールして処理します。これにより、Qtはrepaint()の呼び出しよりも高速でちらつきが少なくなるように最適化できます。

Update()を数回呼び出すと、通常は1回のpaintEvent()呼び出しだけになります。

Qtは通常、paintEvent()呼び出しの前にウィジェットの領域を消去します。 Qt :: WA_OpaquePaintEventウィジェット属性が設定されている場合、ウィジェットはすべてのピクセルを不透明色でペイントする必要があります。

12
Chernobyl

QWidget.update()はもう試しましたか

この関数は、見えない部分をそのままにして、見える部分だけを更新します。

4
Bharadwaj