niewyjaśnione opóźnienie po zakończeniu ładowania QProgressBar

Mam emitowany sygnał z pętli (która dokonuje pewnych obliczeń), która uruchamia aktualizację paska postępu, która znajduje się w głównym interfejsie GUI, po zakończeniu pętli pasek postępu jest aktualizowany do 100% (pasek postępu staje się ukryty po zakończeniu procesu), ale niż istnieje opóźnienie, pasek postępu pozostaje na 100% i czasami mysz zmienia się na zajęty, a dopiero po kilku sekundach pasek postępu staje się ukryty (wskazuje mi, że opóźnienie się kończy), nie ma nic po tej pętli, więc nic nie mogę zrobić myśli, że może to opóźnić.

Należy zauważyć, że jeśli obliczenia pętli są lekkie (co oznacza, że ​​nie trzeba wykonywać wielu obliczeń), nie ma takiego opóźnienia.

Sygnał emitujący znajduje się wewnątrz klasy w warstwie logicznej, spróbowałem czegoś, włączając<QtGui/QApplication> do tej klasy (co wydaje mi się niewłaściwe, ponieważ jest to warstwa logiczna, więc dlaczego powinna ona potrzebować bibliotek QtGui, ale testuję tylko coś), umieściłem następujący kodqApp->processEvents(); wewnątrz pętli, a teraz wydaje się, że coś się toczy, nie ma zajętej myszy, ale nadal występuje opóźnienie (jedyna inna rzecz, jaką mogę zareagować za pomocą GUI podczas tego opóźnienia, ale nie ma zaktualizowanych wyników, dopóki to opóźnienie się nie zakończy).

Z powodu testu zprocessEvents() Myślałem, że to coś związanego z wątkami, ale jeśli tak, jak mogę poprawić zachowanie opóźnienia, oczywiście, jeśli ktoś myśli, że może to być coś innego, proszę powiedzieć.

Przykładowy kod:

Klasa warstwy logicznej:

#include <QtGui/QApplication>
...

processMethod(...)
{
    Loop(...)
    {
        qApp->processEvents();
        emit processBarSignle(value);
        ...some calculations...
    }
    emit processBarSignle(100);
}

Wyświetl warstwę (MainWindow):

on_btn_nextProcess_clicked()
{
    m_ui->pBar_process->setVisible(true);
    LogicClass->processMethod(...);
    m_ui->pBar_process->setVisible(false);
}

Dzięki

questionAnswers(2)

yourAnswerToTheQuestion