Qt Forum

    • Login
    • Search
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search
    • Unsolved

    Qt Academy Launch in California!

    Solved Heavy UI creation with progress displaying

    General and Desktop
    3
    4
    425
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • Mahoney
      Mahoney last edited by

      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?

      ? 1 Reply Last reply Reply Quote 0
      • Q
        Q139 last edited by Q139

        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.

        1 Reply Last reply Reply Quote 0
        • ?
          A Former User @Mahoney last edited by

          @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.

          Mahoney 1 Reply Last reply Reply Quote 2
          • Mahoney
            Mahoney @Guest last edited by

            @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.

            1 Reply Last reply Reply Quote 0
            • First post
              Last post