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. Close connection qobject
Forum Updated to NodeBB v4.3 + New Features

Close connection qobject

Scheduled Pinned Locked Moved Solved General and Desktop
23 Posts 4 Posters 8.0k Views 1 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.
  • BjornWB Offline
    BjornWB Offline
    BjornW
    wrote on last edited by
    #12

    Post your code please. I don't understand. It should always be possible to close the connection.

    J 2 Replies Last reply
    1
    • BjornWB BjornW

      Post your code please. I don't understand. It should always be possible to close the connection.

      J Offline
      J Offline
      Jeronimo
      wrote on last edited by
      #13

      @BjornW maybe can be because in my main window class i defined with this way
      class MainWindow : public QObject {

      }???

      mrjjM 1 Reply Last reply
      0
      • J Jeronimo

        @BjornW maybe can be because in my main window class i defined with this way
        class MainWindow : public QObject {

        }???

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

        @Jeronimo
        Actually all QWidgets are QObject too so it should not matter.

        1 Reply Last reply
        1
        • BjornWB Offline
          BjornWB Offline
          BjornW
          wrote on last edited by
          #15

          Do you inherit QMainWindow?

          class MainWindow : public QMainWindow
          
          1 Reply Last reply
          1
          • BjornWB BjornW

            Post your code please. I don't understand. It should always be possible to close the connection.

            J Offline
            J Offline
            Jeronimo
            wrote on last edited by
            #16

            @BjornW i only did one function to connect:
            void MainWindow::escucharMouse()
            {
            m_connection = QObject::connect(&mouselog::instance(), &mouselog::mouseEvent, { });
            }
            Other for close:
            void MainWindow::stopEscucharMouse()
            {
            QObject::disconnect(m_connection );
            }
            i defined in headers:
            class MainWindow : public QMainWindow
            {
            ...
            public
            private:
            QMetaObject::Connection m_connection;
            public slots:
            void escucharMouse();
            void apagarMouse();
            and slots to call these functions (two buttons)
            };

            and in the slots i call the function one to open other to close like:

            void MainWindow::slot1(){
            m_connection = QObject::connect(&mouselog::instance(), &mouselog::mouseEvent, { });
            }

            void MainWindow::slot1(){
            QObject::disconnect(m_connection );
            }
            i'm using one hook to capture the events of my mouse.
            seems not to close connection and still capture events.

            1 Reply Last reply
            0
            • BjornWB Offline
              BjornWB Offline
              BjornW
              wrote on last edited by
              #17

              You have two definitions of slot1()?

              J 1 Reply Last reply
              1
              • BjornWB BjornW

                You have two definitions of slot1()?

                J Offline
                J Offline
                Jeronimo
                wrote on last edited by Jeronimo
                #18

                @BjornW i tried two different public slots like:

                connect(&this->verMouse,SIGNAL(timeout()),this,SLOT(escucharMouse()));
                connect(&this->verMouse,SIGNAL(timeout()),this,SLOT(stopEscucharMouse()));
                
                void MainWindow::escucharMouse()
                {
                      m_connection = QObject::connect(&mouselog::instance(), &mouselog::mouseEvent, [](){ });
                }
                void MainWindow::stopEscucharMouse()
                {
                      QObject::disconnect(m_connection ); 
                }
                

                with headers in private for metaobject::connection and slots in public slots.

                But now how can call one slot or other i call them for example with this way:

                escucharMouse(); -> to connect
                stopEscucharMouse(); -> dont listen more
                

                I put two different slots

                Works to connect but to disconnect not seems to work.
                inherit of qobject

                1 Reply Last reply
                0
                • J Offline
                  J Offline
                  Jeronimo
                  wrote on last edited by
                  #19

                  i solved my problem but the connection still thx all

                  1 Reply Last reply
                  1
                  • BjornWB Offline
                    BjornWB Offline
                    BjornW
                    wrote on last edited by
                    #20

                    This does not seem right:

                    connect(&this->verMouse,SIGNAL(timeout()),this,SLOT(escucharMouse()));
                    connect(&this->verMouse,SIGNAL(timeout()),this,SLOT(stopEscucharMouse()));
                    

                    You connect the same signal. And why does "verMouse" have a a timeout? What is it?

                    Anyway, since you say you solved your problem...

                    J 2 Replies Last reply
                    1
                    • BjornWB BjornW

                      This does not seem right:

                      connect(&this->verMouse,SIGNAL(timeout()),this,SLOT(escucharMouse()));
                      connect(&this->verMouse,SIGNAL(timeout()),this,SLOT(stopEscucharMouse()));
                      

                      You connect the same signal. And why does "verMouse" have a a timeout? What is it?

                      Anyway, since you say you solved your problem...

                      J Offline
                      J Offline
                      Jeronimo
                      wrote on last edited by Jeronimo
                      #21

                      @BjornW i need to use different signals to close the connection? i put timeout because these slots will repeat each time i say. I'm interesting to solve this issue because it's very useful too.

                      1 Reply Last reply
                      0
                      • BjornWB BjornW

                        This does not seem right:

                        connect(&this->verMouse,SIGNAL(timeout()),this,SLOT(escucharMouse()));
                        connect(&this->verMouse,SIGNAL(timeout()),this,SLOT(stopEscucharMouse()));
                        

                        You connect the same signal. And why does "verMouse" have a a timeout? What is it?

                        Anyway, since you say you solved your problem...

                        J Offline
                        J Offline
                        Jeronimo
                        wrote on last edited by
                        #22

                        @BjornW verMouse.setInterval(50); with this i was trying to stop the signal verMouse.stop() documentation https://doc.qt.io/qt-4.8/qtimer.html#stop

                        1 Reply Last reply
                        0
                        • BjornWB Offline
                          BjornWB Offline
                          BjornW
                          wrote on last edited by
                          #23
                          connect(&this->verMouse,SIGNAL(timeout()),this,SLOT(escucharMouse()));
                          connect(&this->verMouse,SIGNAL(timeout()),this,SLOT(stopEscucharMouse()));
                          

                          You have connected the same signal to both escuchar/stopEscuchar! This makes no sense. The order in which the slots are called is undefined in this case.

                          1 Reply Last reply
                          0

                          • Login

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