2016-05-23 11 views
0

私はあるクラスにQLabelオブジェクトを作成し、QList<QLabel*> *objectsに追加しています。 QListはメインクラスのobjects = new QList<QLabel*>();というコマンドで作成され、オブジェクトが作成されて追加されたクラスに送信されます。このQListも私のmovement classに送られます。 私のmovement classには、QListが空であるかどうかを検出するタイマーがあり、そうでない場合は、QListQLabelオブジェクトをすべて実行し、状況によってはQLabelオブジェクトを移動します。私の問題の出番QLabelの位置が更新されない

はこれがある。コードが完全にコンパイルされ、私はコードをデバッグを使用して行っている、移動コマンドが完全に実行され、私はXを表示するためにqDebud()を使用している場合、Yは、それが返すQLabelの座標正しい値が表示されますが、ディスプレイ上で動きは更新されませんか? QLabelは正しい時刻に完全に削除され、画面から削除されますが、動きは表示されませんか?

なぜこれが起こるのか、それを修正する方法についてのいくつかの洞察を持つ人はいますか?

答えて

1

コードはウィジェットを移動し、デバッグ出力は位置が変更されたことを示しますが、 という事実で、一部のウィジェットはまだ前の位置にあります。どうして?

ウィジェットの位置の更新が遅れる可能性があります。この呼び出しを使用してみてください:

QWidget::updateGeometry()

for(auto* pLabel : listOfLabels) 
{ 
    // and other actions suitable 
    // pLabel->move(newPoint(x, y)); 
    pLabel->updateGeometry(); 
} 
+0

これはどのようなので、今まで効果がないようです。 移動操作が実行された直後に実装する必要がありますか? – 4DaMouf

+0

あなたのコードが必要です。最小限の十分な例。 – AlexanderVX

関連する問題