2013-05-07 35 views
1

我有一個水平佈局,當用戶輸入一個數字時,我將這些小部件(包含圖片)添加到該佈局。QT - 逐步添加小部件到水平佈局

void MainWindow::on_pushButton_2_clicked() 
{ 
    for(int i=0; i<count; i++) 
    { 
     ui->horizontalLayout_4->addWidget(label); 
    } 
} 

例如,如果用戶輸入100,該函數循環100次,並且在該函數完成其執行後,它同時添加100個小部件。

但是我想添加窗口小部件步驟bu的功能。

例如,當i = 0時,它會添加,當i = 1時它會添加..並且用戶應該逐步看到添加項目。

可能嗎?

+0

嘗試'usleep()'?也把這個'QThread'將是一件好事 – 2013-05-07 20:08:24

回答

3

on_pushButton_2_clicked中,您可以開始QTimer,連接到添加單個小部件的插槽。給定時器一個合理的超時時間,這樣你就可以「看到」每個被添加的部件。然後在班上使用計數器,以便知道何時停止計時器。因此,如果用戶輸入10,則將計數器設置爲10,並在每次啓動定時器時從中減去1。當計數器達到零時停止定時器。

+0

我試過,但我想添加該小部件完全是當我調用'ui-> horizo​​ntalLayout_4-> addWidget(標籤);' 當我使用QTimer,小部件在循環結束後添加。我的計時器和連接看起來像這樣'QTimer * timer = new QTimer(this); timer-> start(500); connect(timer,SIGNAL(timeout()),this,SLOT(currentplaying())); ' – abby 2013-05-12 12:37:40

+0

如果您想在on_pushButton_2_clicked中一次添加一個,那麼您可以保持原樣,但是在每次迭代時添加一個睡眠和一個對QCoreApplication :: processEvents的調用。 – kenrogers 2013-05-13 12:17:24

1

我會執行一個計時器,使UI有機會在每次拍攝之間刷新

相關問題