2016-05-23 87 views
0

我在我的一個班級創建QLabel對象,並將它們添加到我的QList<QLabel*> *objectsQList在我的主類中使用命令objects = new QList<QLabel*>();創建,然後發送到創建和添加對象的類。這QList也被髮送到我的movement class。 在我的movement class我有一個計時器,檢測QList是否爲空,如果不是,我運行QList中的所有QLabel對象,在某些情況下,我移動QLabel對象。QLabel職位不更新

這是我的問題出現的地方。代碼編譯完美,我使用了調試並通過代碼,移動命令執行完美,如果我使用qDebud()來顯示它的x和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