QT - Добавяне на джаджи към хоризонтално оформление стъпка по стъпка

Имам хоризонтално оформление и когато потребителят въведе число, добавям този брой уиджети (които съдържат картина) към това оформление.

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

Например, ако потребителят въведе 100, тази функция се завърта 100 пъти и след като функцията приключи изпълнението си, добавя 100 уиджета едновременно.

Но искам функция за добавяне на джаджи стъпка бу стъпка.

Например, когато i=0, той добавя, когато i=1 добавя... И потребителят трябва да види добавянето на елементи стъпка по стъпка.

Възможно ли е?


person abby    schedule 07.05.2013    source източник
comment
опитайте usleep()? също така поставянето на това в QThread би било добре да се направи   -  person Thomas Ruiz    schedule 08.05.2013


Отговори (2)


В on_pushButtonQTimerclicked бихте могли да стартирате QTimer, свързан към слот, който добавя една джаджа. Дайте на таймера разумно време за изчакване, така че да можете да „видите“ всяка добавена джаджа. След това използвайте брояч във вашия клас, за да знаете кога да спрете таймера. Така че, ако потребителят е въвел 10, настройте брояча на 10 и изваждайте единица от него при всяко задействане на таймера. Спрете таймера, когато броячът достигне нула.

person kenrogers    schedule 07.05.2013
comment
Опитах, но искам да добавя тази джаджа точно когато извиках ui->horizontalLayout_4->addWidget(label);, когато използвам QTimer, джаджи се добавят след приключване на for цикъла. моят таймер и връзка изглеждат така QTimer *timer = new QTimer(this); timer->start(500); connect(timer, SIGNAL(timeout()), this, SLOT(currentplaying())); - person abby; 12.05.2013
comment
Ако искате да добавите всички тях един по един в рамките на on_pushButton_2_clicked, тогава можете да запазите кода си такъв, какъвто е, но да добавите заспиване и извикване към QCoreApplication::processEvents при всяка итерация. - person kenrogers; 13.05.2013

Бих внедрил таймер, който дава възможност на потребителския интерфейс да се опреснява между всеки изстрел

person Luca Rocchi    schedule 07.05.2013