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.2k 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
    #10

    Good luck :)

    J 1 Reply Last reply
    2
    • BjornWB BjornW

      Good luck :)

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

      @BjornW your help me a lot thx but i think when someone use one hook for mouse events for example it's impossible to close this connection. thx again!

      1 Reply Last reply
      1
      • 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