Solved Prawdopodobnie zła logika programu
-
Witam, mam problem wynikający jak mi się ze złej struktury napisanego przeze mnie programu.
Ustawiłem za pomocą connect, aby po wciśnięciu dochodziło do funkcji, która zajmuje zawsze ponad minutę (analiza zewnętrznych plików). Niestety następstwem tego jest to, że program całkowicie "zamraża się", co przeszkadza m.in. na wyświetlanie jakichkolwiek komunikatów np. na status barze.
Macie jakieś pomysły jak to rozwiązać?
-
Cześć. Od tego dokładnie są wątki. Długo trwającą funkcję uruchom na innym wątku a na jej końcu wyemituj sygnał do głównego wątku z wynikiem. Jeśli nie chcesz wysyłać sygnału z tamtej funkcji to możesz też utworzyć
QFutureWatcher
i podpiąć się do jego sygnałufinished
. Przykład znajdziesz tutaj: QFutureWatcher.Jeśli chcesz pokazać np. pasek postępu to możesz również z tej funkcji na innym wątku emitować sygnał z procentem a na głównym wątku podpiąć się do niego i aktualizować wartość paska.
-
Cześć. Od tego dokładnie są wątki. Długo trwającą funkcję uruchom na innym wątku a na jej końcu wyemituj sygnał do głównego wątku z wynikiem. Jeśli nie chcesz wysyłać sygnału z tamtej funkcji to możesz też utworzyć
QFutureWatcher
i podpiąć się do jego sygnałufinished
. Przykład znajdziesz tutaj: QFutureWatcher.Jeśli chcesz pokazać np. pasek postępu to możesz również z tej funkcji na innym wątku emitować sygnał z procentem a na głównym wątku podpiąć się do niego i aktualizować wartość paska.