0

ビューポート オブジェクトの選択が変更されると、新しいオブジェクトの QHash を含むシグナルが発行されます。この信号は、新しいプロパティ/設定 UI をそれらから持ち上げ、メイン ウィンドウのプロパティ ペインに表示されている既存のプロパティを破棄し、それらを新しいプロパティ/設定に置き換えるドキュメント サブウィンドウによってキャッチされます。

print ステートメントを使用すると、これが機能することがわかります。すべてのシグナル/スロット接続が正しく起動しています。ただし、メイン ウィンドウで直接操作を実行すると (ボタンを押し、マウスをウィジェットの上に置くと)、問題のウィジェットが更新されます。しかし、ビューポートでオブジェクトを選択しているときは、プロパティ ペインが更新されず、前のオブジェクトのプロパティが表示されてしまいます。ウィンドウを移動したり、ウィジェット (再描画をトリガーするため)、ウィジェットは魔法のように正しくなります。

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

誰かが同様の経験をしたことがありますか?

4

1 に答える 1

2

静的関数QApplication::processEvents()を使用してみましたか?

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

于 2011-08-12T08:28:13.323 に答える