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. Signal is not read by the Class
Forum Updated to NodeBB v4.3 + New Features

Signal is not read by the Class

Scheduled Pinned Locked Moved Solved General and Desktop
22 Posts 4 Posters 2.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.
  • Christian EhrlicherC Christian Ehrlicher

    @Vijaykarthikeyan said in Signal is not read by the Class:

    Qt creator platform

    Qt Creator is an IDE, no platform.
    Searching by yourself for c++ beginners stuff in the net should not be that hard.

    V Offline
    V Offline
    Vijaykarthikeyan
    wrote on last edited by
    #13

    @Christian-Ehrlicher But,before this..i followed the same procedure for UDP communication.It worked fine..The data received from udp accessed by the second class..That's why I have tried like this.I have nothing changed a single line from the udp communciation..If the data accessed by second class in udp by this method, why not working in this serial communication,,That's why I have doubted baudrate.

    jsulmJ 1 Reply Last reply
    0
    • V Vijaykarthikeyan

      @Christian-Ehrlicher But,before this..i followed the same procedure for UDP communication.It worked fine..The data received from udp accessed by the second class..That's why I have tried like this.I have nothing changed a single line from the udp communciation..If the data accessed by second class in udp by this method, why not working in this serial communication,,That's why I have doubted baudrate.

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

      @Vijaykarthikeyan It is really not difficult to pass a pointer to MainWindow (or any other data) to your Link class:

      class Link:
      {
      public:
          Link(MainWindow *mainWindow_):
              mainWindow(mainWindow_)
          {}
      

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

      1 Reply Last reply
      4
      • J.HilkJ Offline
        J.HilkJ Offline
        J.Hilk
        Moderators
        wrote on last edited by
        #15

        So, @Vijaykarthikeyan for your better understanding:

        Here's a simple example to illustrate the difference between a C++ file and an instance of a class.

        Let's say we have a C++ file named Dog.cpp that defines a Dog class:

        // Dog.cpp
        #include <iostream>
        #include <string>
        
        class Dog {
        public:
            std::string name;
        
            Dog(std::string dogName) {
                name = dogName;
            }
        
            void bark() {
                std::cout << name << " says: Woof!" << std::endl;
            }
        };
        

        In this file, we've defined a Dog class with a constructor and a bark method. This is just a blueprint for creating Dog objects, not an instance itself.

        Now, in another C++ file (let's call it main.cpp), we can create multiple instances of the Dog class:

        // main.cpp
        #include "Dog.cpp"
        
        int main() {
            Dog dog1("Fido");
            Dog dog2("Rex");
        
            dog1.bark();  // Outputs: Fido says: Woof!
            dog2.bark();  // Outputs: Rex says: Woof!
        
            return 0;
        }
        

        In main.cpp, we've created two instances of the Dog class, each with its own name. Each instance (dog1 and dog2) is independent of the other. They are both instances of the Dog class, but they are separate objects with their own state (in this case, their names).

        So, one C++ file (Dog.cpp) does not equate to one instance of an object/class. The C++ file contains the definition (or blueprint) of the class, and instances of that class can be created in any other part of the program (like in main.cpp).


        Lets modify the example to include another class that takes a Dog pointer and calls the bark method. Let's create a new class called Person:

        // Person.cpp
        #include "Dog.cpp"
        
        class Person {
        public:
            std::string name;
        
            Person(std::string personName) {
                name = personName;
            }
        
            void command(Dog* dog) {
                std::cout << name << " commands: ";
                dog->bark();
            }
        };
        

        In this Person class, we have a command method that takes a pointer to a Dog object and calls the Dog's bark method.

        Now, let's modify our main.cpp to use this new Person class:

        // main.cpp
        #include "Person.cpp"
        
        int main() {
            Dog dog1("Fido");
            Person person1("Alice");
        
            person1.command(&dog1);  // Outputs: Alice commands: Fido says: Woof!
        
            return 0;
        }
        

        In this modified main.cpp, we create a Dog instance (dog1) and a Person instance (person1). We then call the command method on the Person instance, passing in a pointer to the Dog instance. This results in the Person instance commanding the Dog instance to bark. I hope this helps! Let me know if you have any other questions.


        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.

        V 1 Reply Last reply
        4
        • J.HilkJ J.Hilk

          So, @Vijaykarthikeyan for your better understanding:

          Here's a simple example to illustrate the difference between a C++ file and an instance of a class.

          Let's say we have a C++ file named Dog.cpp that defines a Dog class:

          // Dog.cpp
          #include <iostream>
          #include <string>
          
          class Dog {
          public:
              std::string name;
          
              Dog(std::string dogName) {
                  name = dogName;
              }
          
              void bark() {
                  std::cout << name << " says: Woof!" << std::endl;
              }
          };
          

          In this file, we've defined a Dog class with a constructor and a bark method. This is just a blueprint for creating Dog objects, not an instance itself.

          Now, in another C++ file (let's call it main.cpp), we can create multiple instances of the Dog class:

          // main.cpp
          #include "Dog.cpp"
          
          int main() {
              Dog dog1("Fido");
              Dog dog2("Rex");
          
              dog1.bark();  // Outputs: Fido says: Woof!
              dog2.bark();  // Outputs: Rex says: Woof!
          
              return 0;
          }
          

          In main.cpp, we've created two instances of the Dog class, each with its own name. Each instance (dog1 and dog2) is independent of the other. They are both instances of the Dog class, but they are separate objects with their own state (in this case, their names).

          So, one C++ file (Dog.cpp) does not equate to one instance of an object/class. The C++ file contains the definition (or blueprint) of the class, and instances of that class can be created in any other part of the program (like in main.cpp).


          Lets modify the example to include another class that takes a Dog pointer and calls the bark method. Let's create a new class called Person:

          // Person.cpp
          #include "Dog.cpp"
          
          class Person {
          public:
              std::string name;
          
              Person(std::string personName) {
                  name = personName;
              }
          
              void command(Dog* dog) {
                  std::cout << name << " commands: ";
                  dog->bark();
              }
          };
          

          In this Person class, we have a command method that takes a pointer to a Dog object and calls the Dog's bark method.

          Now, let's modify our main.cpp to use this new Person class:

          // main.cpp
          #include "Person.cpp"
          
          int main() {
              Dog dog1("Fido");
              Person person1("Alice");
          
              person1.command(&dog1);  // Outputs: Alice commands: Fido says: Woof!
          
              return 0;
          }
          

          In this modified main.cpp, we create a Dog instance (dog1) and a Person instance (person1). We then call the command method on the Person instance, passing in a pointer to the Dog instance. This results in the Person instance commanding the Dog instance to bark. I hope this helps! Let me know if you have any other questions.

          V Offline
          V Offline
          Vijaykarthikeyan
          wrote on last edited by
          #16

          @J-Hilk ok.. I understand that instead of instantiating the class, we should pass the class member as a pointer to the 2nd class method. So that should be the correct procedure.

          J.HilkJ 1 Reply Last reply
          0
          • V Vijaykarthikeyan

            @J-Hilk ok.. I understand that instead of instantiating the class, we should pass the class member as a pointer to the 2nd class method. So that should be the correct procedure.

            J.HilkJ Offline
            J.HilkJ Offline
            J.Hilk
            Moderators
            wrote on last edited by
            #17

            @Vijaykarthikeyan said in Signal is not read by the Class:

            @J-Hilk ok.. I understand that instead of instantiating the class, we should pass the class member as a pointer to the 2nd class method. So that should be the correct procedure.

            I can't quite sign that statement the way it is ....

            Yes, if you do it that way, it will work.

            What you "should" do is make the QObject::connect in the scope that instantiates your Link class


            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.

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

              @Vijaykarthikeyan said in Signal is not read by the Class:

              @J-Hilk ok.. I understand that instead of instantiating the class, we should pass the class member as a pointer to the 2nd class method. So that should be the correct procedure.

              I can't quite sign that statement the way it is ....

              Yes, if you do it that way, it will work.

              What you "should" do is make the QObject::connect in the scope that instantiates your Link class

              V Offline
              V Offline
              Vijaykarthikeyan
              wrote on last edited by
              #18

              @J-Hilk like this??

              Link::Link(MainWindow *mainWindow_): mainWindow(mainWindow_)
              {
              connect(mainWindow,&MainWindow::data_received,this,&Link::update);
              }
              
              J.HilkJ 1 Reply Last reply
              0
              • V Vijaykarthikeyan

                @J-Hilk like this??

                Link::Link(MainWindow *mainWindow_): mainWindow(mainWindow_)
                {
                connect(mainWindow,&MainWindow::data_received,this,&Link::update);
                }
                
                J.HilkJ Offline
                J.HilkJ Offline
                J.Hilk
                Moderators
                wrote on last edited by
                #19

                @Vijaykarthikeyan

                alt text


                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.

                V 1 Reply Last reply
                1
                • J.HilkJ J.Hilk

                  @Vijaykarthikeyan

                  alt text

                  V Offline
                  V Offline
                  Vijaykarthikeyan
                  wrote on last edited by
                  #20

                  @J-Hilk I have another question which i have posted in another link..can you explain that too?

                  jsulmJ 1 Reply Last reply
                  0
                  • V Vijaykarthikeyan

                    @J-Hilk I have another question which i have posted in another link..can you explain that too?

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

                    @Vijaykarthikeyan You could at least post that another link...

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

                    V 1 Reply Last reply
                    1
                    • jsulmJ jsulm

                      @Vijaykarthikeyan You could at least post that another link...

                      V Offline
                      V Offline
                      Vijaykarthikeyan
                      wrote on last edited by
                      #22

                      @jsulm https://forum.qt.io/post/775285

                      1 Reply Last reply
                      0
                      • V Vijaykarthikeyan has marked this topic as solved on

                      • Login

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