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. quit Qt application, not working
QtWS25 Last Chance

quit Qt application, not working

Scheduled Pinned Locked Moved Solved General and Desktop
14 Posts 5 Posters 21.2k Views
  • 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.
  • O Offline
    O Offline
    o6a6r9v1p
    wrote on last edited by
    #1

    Implemented quit operation using a push button, but it is not working.
    this is the line used :
    connect(hCloseButton, SIGNAL(clicked()), this, SLOT(quit()));
    this line is used in side a widget.
    is it to be modified?
    Thanks in advance.

    JKSHJ 1 Reply Last reply
    0
    • O o6a6r9v1p

      Implemented quit operation using a push button, but it is not working.
      this is the line used :
      connect(hCloseButton, SIGNAL(clicked()), this, SLOT(quit()));
      this line is used in side a widget.
      is it to be modified?
      Thanks in advance.

      JKSHJ Offline
      JKSHJ Offline
      JKSH
      Moderators
      wrote on last edited by
      #2

      @o6a6r9v1p said in quit Qt application, not working:

      connect(hCloseButton, SIGNAL(clicked()), this, SLOT(quit()));

      What is this?

      Are your trying to activate QCoreApplication::quit()?

      Qt Doc Search for browsers: forum.qt.io/topic/35616/web-browser-extension-for-improved-doc-searches

      1 Reply Last reply
      5
      • mrjjM Offline
        mrjjM Offline
        mrjj
        Lifetime Qt Champion
        wrote on last edited by mrjj
        #3

        Hi
        check the return from connect to see if its ok.
        You tell is that "this" have a function quit()
        is that true?
        Maybe this should be application?

        Did you try just to call close() ?

        edit: @JKSH was faster :)

        O 1 Reply Last reply
        3
        • mrjjM mrjj

          Hi
          check the return from connect to see if its ok.
          You tell is that "this" have a function quit()
          is that true?
          Maybe this should be application?

          Did you try just to call close() ?

          edit: @JKSH was faster :)

          O Offline
          O Offline
          o6a6r9v1p
          wrote on last edited by
          #4

          @mrjj

          Inside user class, a push button is created to close the program itself, when necessary.
          The statement is used in a function that belongs to the user class.

          i tried close() also, but the program is not closing.

          mrjjM 1 Reply Last reply
          0
          • O o6a6r9v1p

            @mrjj

            Inside user class, a push button is created to close the program itself, when necessary.
            The statement is used in a function that belongs to the user class.

            i tried close() also, but the program is not closing.

            mrjjM Offline
            mrjjM Offline
            mrjj
            Lifetime Qt Champion
            wrote on last edited by
            #5

            @o6a6r9v1p
            Ok but the user class should then connect to Application instance
            so it would be
            qDebug() << "quit conn:" << connect(ui->pushButton, SIGNAL(clicked()), qApp, SLOT(quit()));

            and check it says
            quit conn: true

            O 1 Reply Last reply
            1
            • mrjjM mrjj

              @o6a6r9v1p
              Ok but the user class should then connect to Application instance
              so it would be
              qDebug() << "quit conn:" << connect(ui->pushButton, SIGNAL(clicked()), qApp, SLOT(quit()));

              and check it says
              quit conn: true

              O Offline
              O Offline
              o6a6r9v1p
              wrote on last edited by
              #6

              @mrjj
              thanks for the help. But it didnot work.
              Compiler gives the error:
              ui was not declared in this scope.

              mrjjM 1 Reply Last reply
              0
              • O o6a6r9v1p

                @mrjj
                thanks for the help. But it didnot work.
                Compiler gives the error:
                ui was not declared in this scope.

                mrjjM Offline
                mrjjM Offline
                mrjj
                Lifetime Qt Champion
                wrote on last edited by
                #7

                @o6a6r9v1p

                just use
                hCloseButton
                instead :)
                the ui->butt was just from my sample to see that it did close.

                You did read docs about connect ?
                http://doc.qt.io/qt-5/signalsandslots.html

                This is a MUST read if you are to use Qt.

                1 Reply Last reply
                4
                • O Offline
                  O Offline
                  o6a6r9v1p
                  wrote on last edited by
                  #8

                  I have this main function
                  @int main (int argc, char* argv[])
                  {

                  QApplication app(argc, argv);
                  

                  // setLayout(verticalLayout);
                  // window.setWindowTitle(QApplication::translate("Device Monitor"));

                  myApp w;
                  

                  // w.show();

                  return app.exec();
                  

                  }
                  @

                  myApp is user class, in this "CLOSE" button is created. we want to use it , instead of using "X" in GUI to close the application.
                  we didnot use QT creator to generate GUI, we wrote it.

                  this is where difference comes between my code and examples & ideas given in the forum.

                  jsulmJ 1 Reply Last reply
                  0
                  • mrjjM Offline
                    mrjjM Offline
                    mrjj
                    Lifetime Qt Champion
                    wrote on last edited by
                    #9

                    Hi
                    Actually the X close the window
                    QApplication is set to exit exec()
                    when last top window is closed

                    It dont matter if u used UI file or programmed it.

                    But the shown connect
                    qDebug() << "quit conn:" << connect(ui->pushButton, SIGNAL(clicked()), qApp, SLOT(quit()));

                    will not close window but try to make whole app quit.

                    O 1 Reply Last reply
                    1
                    • O o6a6r9v1p

                      I have this main function
                      @int main (int argc, char* argv[])
                      {

                      QApplication app(argc, argv);
                      

                      // setLayout(verticalLayout);
                      // window.setWindowTitle(QApplication::translate("Device Monitor"));

                      myApp w;
                      

                      // w.show();

                      return app.exec();
                      

                      }
                      @

                      myApp is user class, in this "CLOSE" button is created. we want to use it , instead of using "X" in GUI to close the application.
                      we didnot use QT creator to generate GUI, we wrote it.

                      this is where difference comes between my code and examples & ideas given in the forum.

                      jsulmJ Offline
                      jsulmJ Offline
                      jsulm
                      Lifetime Qt Champion
                      wrote on last edited by
                      #10

                      @o6a6r9v1p See http://doc.qt.io/qt-5.8/qwidget.html#closeEvent

                      https://forum.qt.io/topic/113070/qt-code-of-conduct

                      1 Reply Last reply
                      0
                      • mrjjM mrjj

                        Hi
                        Actually the X close the window
                        QApplication is set to exit exec()
                        when last top window is closed

                        It dont matter if u used UI file or programmed it.

                        But the shown connect
                        qDebug() << "quit conn:" << connect(ui->pushButton, SIGNAL(clicked()), qApp, SLOT(quit()));

                        will not close window but try to make whole app quit.

                        O Offline
                        O Offline
                        o6a6r9v1p
                        wrote on last edited by
                        #11

                        @mrjj
                        i did as you told, I got the following

                        1. when i used
                          @
                          connect(hCloseButton, SIGNAL(clicked()), this, SLOT(quit()));
                          @

                        it gave the message
                        "QObject::connect: No such slot myApp::quit()"

                        it compiles with no errors.
                        When Pushbutton is pressed it does not close the Application.

                        1. when i used
                          @
                          connect(hCloseButton, SIGNAL(clicked()), qApp, SLOT(quit()));
                          @
                          it did not compile.
                          it gave the error message
                          "qApp was not declared in this scope"
                        J.HilkJ 1 Reply Last reply
                        0
                        • O o6a6r9v1p

                          @mrjj
                          i did as you told, I got the following

                          1. when i used
                            @
                            connect(hCloseButton, SIGNAL(clicked()), this, SLOT(quit()));
                            @

                          it gave the message
                          "QObject::connect: No such slot myApp::quit()"

                          it compiles with no errors.
                          When Pushbutton is pressed it does not close the Application.

                          1. when i used
                            @
                            connect(hCloseButton, SIGNAL(clicked()), qApp, SLOT(quit()));
                            @
                            it did not compile.
                            it gave the error message
                            "qApp was not declared in this scope"
                          J.HilkJ Offline
                          J.HilkJ Offline
                          J.Hilk
                          Moderators
                          wrote on last edited by
                          #12

                          @o6a6r9v1p

                          qApp is a global pointer referring to the unique application object. It is equivalent to QCoreApplication::instance(), but cast as a QApplication pointer, so only valid when the unique application object is a QApplication.

                          -> your main does not have a QApplication object

                          You said, you have no UI for the designer so I Asume you have a QCoreApplication in your main.

                          and try the following in it

                          //create a `myApp::quit()`
                          QCoreApplication::quit();
                          

                          or

                          connect(quitButton, SIGNAL(clicked()), &app, SLOT(quit()));
                          

                          Be aware of the Qt Code of Conduct, when posting : https://forum.qt.io/topic/113070/qt-code-of-conduct


                          Q: What's that?
                          A: It's blue light.
                          Q: What does it do?
                          A: It turns blue.

                          mrjjM 1 Reply Last reply
                          2
                          • J.HilkJ J.Hilk

                            @o6a6r9v1p

                            qApp is a global pointer referring to the unique application object. It is equivalent to QCoreApplication::instance(), but cast as a QApplication pointer, so only valid when the unique application object is a QApplication.

                            -> your main does not have a QApplication object

                            You said, you have no UI for the designer so I Asume you have a QCoreApplication in your main.

                            and try the following in it

                            //create a `myApp::quit()`
                            QCoreApplication::quit();
                            

                            or

                            connect(quitButton, SIGNAL(clicked()), &app, SLOT(quit()));
                            
                            mrjjM Offline
                            mrjjM Offline
                            mrjj
                            Lifetime Qt Champion
                            wrote on last edited by
                            #13

                            Hi
                            just include
                            #include <QApplication>
                            and its known.

                            Or as @J-Hilk says if that is the case :)

                            O 1 Reply Last reply
                            2
                            • mrjjM mrjj

                              Hi
                              just include
                              #include <QApplication>
                              and its known.

                              Or as @J-Hilk says if that is the case :)

                              O Offline
                              O Offline
                              o6a6r9v1p
                              wrote on last edited by
                              #14

                              @mrjj
                              Thanks for your help.
                              I included <QApplication>
                              and
                              connect(hCloseButton, SIGNAL(clicked()), qApp, SLOT(quit()));
                              worked fine now.

                              "myApp" gui is closing now.

                              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