Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

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ć?


  • Moderators

    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łu finished. 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.


  • Moderators

    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łu finished. 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.


Log in to reply