Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. How to disable the close button of a QProgressDialog?
Forum Updated to NodeBB v4.3 + New Features

How to disable the close button of a QProgressDialog?

Scheduled Pinned Locked Moved Solved General and Desktop
12 Posts 5 Posters 6.2k Views 3 Watching
  • 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.
  • K Offline
    K Offline
    KelvinSP
    wrote on last edited by KelvinSP
    #1

    I'm trying to create a QProgressDialog on OS X with the close button disabled. I'm using the following code:

    QProgressDialog progressDialog = new QProgressDialog(tr("Calculating..."), NULL, 0, 100, this);
    progressDialog->setAutoClose(true);
    progressDialog->setValue(0);
    progressDialog->setWindowTitle(tr("Calculate Weights"));
    progressDialog->setWindowFlags(progressDialog->windowFlags() & ~Qt::WindowCloseButtonHint);
    progressDialog->show();
    

    But it is not working on OS X, the close button is still there and is available. Note that it works well on Windows.

    I'm using Qt 5.3.

    Any idea on how can I solve it?

    Thanks in advance

    C 1 Reply Last reply
    0
    • K KelvinSP

      I'm trying to create a QProgressDialog on OS X with the close button disabled. I'm using the following code:

      QProgressDialog progressDialog = new QProgressDialog(tr("Calculating..."), NULL, 0, 100, this);
      progressDialog->setAutoClose(true);
      progressDialog->setValue(0);
      progressDialog->setWindowTitle(tr("Calculate Weights"));
      progressDialog->setWindowFlags(progressDialog->windowFlags() & ~Qt::WindowCloseButtonHint);
      progressDialog->show();
      

      But it is not working on OS X, the close button is still there and is available. Note that it works well on Windows.

      I'm using Qt 5.3.

      Any idea on how can I solve it?

      Thanks in advance

      C Offline
      C Offline
      Charlie_Hdz
      wrote on last edited by
      #2

      @KelvinSP

      Create a custom push button

      Disable that button with setDisable()

      set the Cancel push button by void QProgressDialog::setCancelButton(QPushButton * cancelButton)

      Enable it when you want.

      Kind Regards,

      Enrique

      Kind Regards,
      Enrique Hernandez
      gearstech.com.mx
      chernandez@gearstech.com.mx

      K 1 Reply Last reply
      0
      • C Charlie_Hdz

        @KelvinSP

        Create a custom push button

        Disable that button with setDisable()

        set the Cancel push button by void QProgressDialog::setCancelButton(QPushButton * cancelButton)

        Enable it when you want.

        Kind Regards,

        Enrique

        K Offline
        K Offline
        KelvinSP
        wrote on last edited by KelvinSP
        #3

        @Charlie_Hdz

        Thanks for the help.
        Actually, I don't want to disable the cancel button.
        I want to disable the 'native window close button' (the X option from the left upper corner).

        1 Reply Last reply
        0
        • Pablo J. RoginaP Offline
          Pablo J. RoginaP Offline
          Pablo J. Rogina
          wrote on last edited by
          #4

          @KelvinSP it looks like your looking at "window flags". You may want to take a look at this example showing how the hints apply to a widget

          Upvote the answer(s) that helped you solve the issue
          Use "Topic Tools" button to mark your post as Solved
          Add screenshots via postimage.org
          Don't ask support requests via chat/PM. Please use the forum so others can benefit from the solution in the future

          K 1 Reply Last reply
          2
          • Pablo J. RoginaP Pablo J. Rogina

            @KelvinSP it looks like your looking at "window flags". You may want to take a look at this example showing how the hints apply to a widget

            K Offline
            K Offline
            KelvinSP
            wrote on last edited by
            #5

            @Pablo-J.-Rogina thanks a lot. "Window flags" are exactly what I'm looking for.

            The problem here is that I'm using the Qt::WindowCloseButtonHint flag to 'block' the native close button of a QProgressDialog and it works well on Windows but it does not block the close button on OS X. I have tried other flags but none of them worked as expected.

            kshegunovK 1 Reply Last reply
            0
            • K KelvinSP

              @Pablo-J.-Rogina thanks a lot. "Window flags" are exactly what I'm looking for.

              The problem here is that I'm using the Qt::WindowCloseButtonHint flag to 'block' the native close button of a QProgressDialog and it works well on Windows but it does not block the close button on OS X. I have tried other flags but none of them worked as expected.

              kshegunovK Offline
              kshegunovK Offline
              kshegunov
              Moderators
              wrote on last edited by
              #6

              Qt has no control over how the window manager treats the window flags. The OSX window manager may simply ignore what you "hint" with the flags and add the close button anyway. From the docs:

              Some of these flags depend on whether the underlying window manager supports them.

              Read and abide by the Qt Code of Conduct

              K 1 Reply Last reply
              2
              • kshegunovK kshegunov

                Qt has no control over how the window manager treats the window flags. The OSX window manager may simply ignore what you "hint" with the flags and add the close button anyway. From the docs:

                Some of these flags depend on whether the underlying window manager supports them.

                K Offline
                K Offline
                KelvinSP
                wrote on last edited by
                #7

                @kshegunov thanks, it makes sense. So, there is no window flag which can accomplish this task on OS X?

                kshegunovK 1 Reply Last reply
                0
                • K KelvinSP

                  @kshegunov thanks, it makes sense. So, there is no window flag which can accomplish this task on OS X?

                  kshegunovK Offline
                  kshegunovK Offline
                  kshegunov
                  Moderators
                  wrote on last edited by kshegunov
                  #8

                  There are no window flags that are guaranteed to be respected. I don't work on OSX, so someone may correct me, but if it doesn't respect your hint I don't think you can do much about it.

                  Read and abide by the Qt Code of Conduct

                  Taz742T 1 Reply Last reply
                  1
                  • kshegunovK kshegunov

                    There are no window flags that are guaranteed to be respected. I don't work on OSX, so someone may correct me, but if it doesn't respect your hint I don't think you can do much about it.

                    Taz742T Offline
                    Taz742T Offline
                    Taz742
                    wrote on last edited by Taz742
                    #9

                    dlg->setWindowFlags(Qt::WindowTitleHint); X button is blocked. try

                    Do what you want.

                    K 1 Reply Last reply
                    0
                    • Taz742T Taz742

                      dlg->setWindowFlags(Qt::WindowTitleHint); X button is blocked. try

                      K Offline
                      K Offline
                      KelvinSP
                      wrote on last edited by KelvinSP
                      #10

                      @Taz742 it doesn't work as expected. I just want to keep the X (close) button disable/unavailable. Thanks.

                      1 Reply Last reply
                      0
                      • K Offline
                        K Offline
                        KelvinSP
                        wrote on last edited by KelvinSP
                        #11

                        I finally found a solution. It worked well with the following combination of flags:

                        progressDialog->setWindowFlags(Qt::Window | Qt::WindowTitleHint | Qt::CustomizeWindowHint);
                        

                        Thank you so much for all help.

                        1 Reply Last reply
                        4
                        • Pablo J. RoginaP Offline
                          Pablo J. RoginaP Offline
                          Pablo J. Rogina
                          wrote on last edited by
                          #12

                          Excellent! Please don't forget to mark your post as solved. Cheers

                          Upvote the answer(s) that helped you solve the issue
                          Use "Topic Tools" button to mark your post as Solved
                          Add screenshots via postimage.org
                          Don't ask support requests via chat/PM. Please use the forum so others can benefit from the solution in the future

                          1 Reply Last reply
                          1

                          • Login

                          • Login or register to search.
                          • First post
                            Last post
                          0
                          • Categories
                          • Recent
                          • Tags
                          • Popular
                          • Users
                          • Groups
                          • Search
                          • Get Qt Extensions
                          • Unsolved