Solved Heavy UI creation with progress displaying
-
Hi all.
In my application I am constructing heavy UI: a wizard with a lot of controls on many pages. This process involves DB access and a lot of other work. All this eventually causes GUI to freeze for quite long moments.
The question is how to show QProgressDialog during this process? I definitely need a second thread for widgets creation and preparation, but it is prohibited. How to workaround it? -
You could call QApplication::processevents in while loop and use timer to execute it , while loops in same thread as ui block qt event handler and ui wont refresh.
But cannot use qtimer as it work with event handler. -
@Mahoney Hi! You could use two processes: One "loader" that shows a simple GUI with progress status during startup and a second process that is your actual wizzard. If you use QProcess for this then you'll have an easy to use communication channel between the processes for sending progress information.
-
@Wieland Well, that's a good idea. I'll try it out. BTW I even don't need interprocess data exchange, since I want to show progress bar in "marquee" mode.