2011-08-12 9 views
0

私はCADのようなアプリケーションを構築しています。ビューポートオブジェクトの選択が変わると、新しいオブジェクトのQHashを含むシグナルが放出されます。この信号は、新しいプロパティ/設定UIを持ち上げてメインウィンドウのプロパティペインに表示されている既存のプロパティを破棄し、新しいプロパティ/設定に置き換えるドキュメントサブウィンドウで捕捉されます。QWidgetが一貫して更新/再描画しない

printステートメントを使用して、私はこれが動作することを知っています - すべてのシグナル/スロット接続が正しく発射されています。しかし、問題のウィジェットを直接更新する(ボタンを押し、ウィジェット上にマウスを置く)と、ウィジェットは非常に不整合に再描画されます。しかし、ビューポートでオブジェクトを選択するだけでは、プロパティペインが更新されずに前のオブジェクトのプロパティが表示されてしまいます。ウィジェット(再ペイントを開始するため)、ウィジェットは魔法のように正しくなります。

これらの関数は別のスレッドから呼び出されていません。コード内で手動でupdate()を呼び出すと、何も変わりません。私がrepaint()を直接呼び出すと(私はそうすべきではないことは分かっています)、少し上手く動作しますが、少し不安定です - ウィジェットがまったく描画されないことがあります。

誰も同じような経験をしていますか?

答えて

2

静的関数QApplication::processEvents()を試しましたか?

QApplication :: processEvents(QEventLoop :: ExcludeUserInputEvents)を実行すると、processEventsが呼び出し元に戻る前に、アプリケーションがマウスのクリックまたはキーの押下を処理できなくなることがあります。

+0

これだけです!ありがとうございました。 – cmannett85

関連する問題