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. QtWebSockets and custom Signals
Forum Updated to NodeBB v4.3 + New Features

QtWebSockets and custom Signals

Scheduled Pinned Locked Moved Solved General and Desktop
13 Posts 3 Posters 875 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.
  • K Kris Revi

    @SGaist MainWindow.cpp or MainWindow.h ?

    and like this

    connect(&m_webSocket, &QWebSocket::connected, this, &MySocket::onConnected); ?

    K Offline
    K Offline
    Kris Revi
    wrote on last edited by
    #4

    Anyone know?

    1 Reply Last reply
    0
    • SGaistS Offline
      SGaistS Offline
      SGaist
      Lifetime Qt Champion
      wrote on last edited by
      #5

      Please show some patience. Allow 24 hours to pass before bumping your own thread. This is a voluntary driven forum and people might not live in the same time zone as you.

      As for your issue, connect is a QObject static method, it follows the same rule as any other C++ static method.

      Your connect statement is wrong, you have a custom class with a custom signal that does not belong to QWebSocket so your connect call will not compile.

      Interested in AI ? www.idiap.ch
      Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

      K 1 Reply Last reply
      1
      • SGaistS SGaist

        Please show some patience. Allow 24 hours to pass before bumping your own thread. This is a voluntary driven forum and people might not live in the same time zone as you.

        As for your issue, connect is a QObject static method, it follows the same rule as any other C++ static method.

        Your connect statement is wrong, you have a custom class with a custom signal that does not belong to QWebSocket so your connect call will not compile.

        K Offline
        K Offline
        Kris Revi
        wrote on last edited by
        #6

        @SGaist said in QtWebSockets and custom Signals:

        Your connect statement is wrong, you have a custom class with a custom signal that does not belong to QWebSocket so your connect call will not compile.

        Im so confused!
        when i try connect(Socket, MySocket::connected, this, MySocket::whenConnected)

        i get 2 errors

        1.no member named 'connected' in 'MySocket
        2. call to non-static member function without an object argument

        1 Reply Last reply
        0
        • K Offline
          K Offline
          Kris Revi
          wrote on last edited by
          #7

          Bump

          Anyone?

          1 Reply Last reply
          0
          • SGaistS Offline
            SGaistS Offline
            SGaist
            Lifetime Qt Champion
            wrote on last edited by
            #8

            As already said:

            @SGaist said in QtWebSockets and custom Signals:

            Please show some patience. Allow 24 hours to pass before bumping your own thread. This is a voluntary driven forum and people might not live in the same time zone as you.
            As for your issue, connect is a QObject static method, it follows the same rule as any other C++ static method.
            Your connect statement is wrong, you have a custom class with a custom signal that does not belong to QWebSocket so your connect call will not compile.

            Please check the Signals And Slots chapter of Qt's documentation, it shows how to use the new syntax.

            Your MySocket class contains a QWebSocket but is not one and does not provide a signal by named connected. Also you are missing the & for your signal and slot arguments.

            Interested in AI ? www.idiap.ch
            Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

            K 1 Reply Last reply
            1
            • SGaistS SGaist

              As already said:

              @SGaist said in QtWebSockets and custom Signals:

              Please show some patience. Allow 24 hours to pass before bumping your own thread. This is a voluntary driven forum and people might not live in the same time zone as you.
              As for your issue, connect is a QObject static method, it follows the same rule as any other C++ static method.
              Your connect statement is wrong, you have a custom class with a custom signal that does not belong to QWebSocket so your connect call will not compile.

              Please check the Signals And Slots chapter of Qt's documentation, it shows how to use the new syntax.

              Your MySocket class contains a QWebSocket but is not one and does not provide a signal by named connected. Also you are missing the & for your signal and slot arguments.

              K Offline
              K Offline
              Kris Revi
              wrote on last edited by
              #9

              @SGaist

              i've put Socket(this) under the init of MainWindow

              void MainWindow::connectTo(QString selected_board)
              {
                  connect(Socket, &QWebSocket::connected, this, MainWindow::whenConnected);
                  Socket.doConnect(QStringLiteral("ws://%1:80").arg(selected_board));
              }
              

              Now if i try to write

              connect(Socket, &QWebSocket::connected, this, MainWindow::whenConnected);
              

              i get reference to non-static member function must called; dud you mean to call it with no arguments?

              if i write

              connect(Socket, &QWebSocket::connected, this, &MainWindow::whenConnected);
              

              i get no matching member function for call to 'connect'

              if i write

              connect(Socket, &QWebSocket::connected, this, &MainWindow::whenConnected());
              

              i get cannot take the address of an rvalue of type 'void'

              JonBJ 1 Reply Last reply
              0
              • SGaistS Offline
                SGaistS Offline
                SGaist
                Lifetime Qt Champion
                wrote on last edited by
                #10

                @Kris-Revi said in QtWebSockets and custom Signals:

                connect(Socket, &QWebSocket::connected, this, &MainWindow::whenConnected);

                What exactly is Socket ? An variable ? A class ?

                If a variable, then it's the only one that has the correct syntax. However, if Socket is an instance of your MySocket class: you cannot connect a signal that is from a different class.

                In C++, name starting with an uppercase letter usually signals a class. Variable names usually starts with a lowercase letter, or an underscore or some other "prefix" but not uppercased letters. Even if just a convention it's one that is used almost everywhere so it would be good to follow it as well to make your code easier to work with.

                Interested in AI ? www.idiap.ch
                Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                1 Reply Last reply
                1
                • K Kris Revi

                  @SGaist

                  i've put Socket(this) under the init of MainWindow

                  void MainWindow::connectTo(QString selected_board)
                  {
                      connect(Socket, &QWebSocket::connected, this, MainWindow::whenConnected);
                      Socket.doConnect(QStringLiteral("ws://%1:80").arg(selected_board));
                  }
                  

                  Now if i try to write

                  connect(Socket, &QWebSocket::connected, this, MainWindow::whenConnected);
                  

                  i get reference to non-static member function must called; dud you mean to call it with no arguments?

                  if i write

                  connect(Socket, &QWebSocket::connected, this, &MainWindow::whenConnected);
                  

                  i get no matching member function for call to 'connect'

                  if i write

                  connect(Socket, &QWebSocket::connected, this, &MainWindow::whenConnected());
                  

                  i get cannot take the address of an rvalue of type 'void'

                  JonBJ Offline
                  JonBJ Offline
                  JonB
                  wrote on last edited by
                  #11

                  @Kris-Revi
                  Further to @SGaist. I've been reading through your code/changes and I too am confused!

                  First show exactly what your Socket is, as he asks. However, additionally I have not seen you define a MainWindow::whenConnected() method, does that exist as a slot in MainWindow?

                  1 Reply Last reply
                  0
                  • K Offline
                    K Offline
                    Kris Revi
                    wrote on last edited by
                    #12

                    @SGaist said in QtWebSockets and custom Signals:

                    @Kris-Revi said in QtWebSockets and custom Signals:

                    connect(Socket, &QWebSocket::connected, this, &MainWindow::whenConnected);

                    What exactly is Socket ? An variable ? A class ?

                    If a variable, then it's the only one that has the correct syntax. However, if Socket is an instance of your MySocket class: you cannot connect a signal that is from a different class.

                    In C++, name starting with an uppercase letter usually signals a class. Variable names usually starts with a lowercase letter, or an underscore or some other "prefix" but not uppercased letters. Even if just a convention it's one that is used almost everywhere so it would be good to follow it as well to make your code easier to work with.

                    Socket is MySocket constructor (MySocket is a class)

                    JonBJ 1 Reply Last reply
                    0
                    • K Kris Revi

                      @SGaist said in QtWebSockets and custom Signals:

                      @Kris-Revi said in QtWebSockets and custom Signals:

                      connect(Socket, &QWebSocket::connected, this, &MainWindow::whenConnected);

                      What exactly is Socket ? An variable ? A class ?

                      If a variable, then it's the only one that has the correct syntax. However, if Socket is an instance of your MySocket class: you cannot connect a signal that is from a different class.

                      In C++, name starting with an uppercase letter usually signals a class. Variable names usually starts with a lowercase letter, or an underscore or some other "prefix" but not uppercased letters. Even if just a convention it's one that is used almost everywhere so it would be good to follow it as well to make your code easier to work with.

                      Socket is MySocket constructor (MySocket is a class)

                      JonBJ Offline
                      JonBJ Offline
                      JonB
                      wrote on last edited by JonB
                      #13

                      @Kris-Revi said in QtWebSockets and custom Signals:

                      Socket is MySocket constructor (MySocket is a class)

                      Sorry, but "Socket is MySocket constructor" just does not mean anything. Nor do I know what your earlier "i've put Socket(this) under the init of MainWindow" means.

                      If Socket is indeed a class, then you cannot write connect(Socket, ...) in any situation. connect() connects the signal of one object/instance to a slot of another object/instance. Not classes.

                      I think you are wanting to achieve the following:

                      1. You have a class MySocket. It is a QObject, so it can use signals/slots.
                      2. It has a member QWebSocket m_webSocket;. So it contains/encapsulates a QWebSocket, but it is not a QWebSocket itself.
                      3. You define a custom signal whenConnected(), which you want emitted when the socket is connected.
                      4. You define a custom slot in MainWindow, to connect to that signal.

                      So...

                      • Inside MySocket you want to connect m_webSocket's connected signal to a slot, also inside MySocket, which goes emit whenConnected(), to raise/emit that signal to the outside world.
                      • And inside MainWindow you want to define a slot which you connect there to the MySocket::whenConnected() signal.

                      Is that right?

                      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