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. Cann't write connect in main.cpp
Forum Updated to NodeBB v4.3 + New Features

Cann't write connect in main.cpp

Scheduled Pinned Locked Moved Unsolved General and Desktop
14 Posts 4 Posters 3.3k 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.
  • L Offline
    L Offline
    L.Gogs
    wrote on 11 Aug 2017, 12:41 last edited by
    #1
    #include <QCoreApplication>
    #include <QTimer>
    #include <QObject>
    #include <QDebug>
    
    class Taz742 : public QObject
    {
    public:
        Taz742()
        {
            tm = new QTimer();
        }
    
        QTimer *tm;
        ~Taz742()
        {
            delete tm;
        }
    
    public slots:
        void Print()
        {
            qDebug() << "Taz742";
        }
    };
    
    int main(int argc, char *argv[])
    {
        QCoreApplication a(argc, argv);
        Taz742 *L = new Taz742();
        L->tm->start(1000);
        L->connect(L->tm, SIGNAL(timeout()), L, SLOT(Print()));
    
        return a.exec();
    }
    
    

    on the black screen appears --> QObject::connect No such slot QObject::Print()
    what is wrong in my code?

    L 1 Reply Last reply 11 Aug 2017, 12:45
    1
    • L L.Gogs
      11 Aug 2017, 12:41
      #include <QCoreApplication>
      #include <QTimer>
      #include <QObject>
      #include <QDebug>
      
      class Taz742 : public QObject
      {
      public:
          Taz742()
          {
              tm = new QTimer();
          }
      
          QTimer *tm;
          ~Taz742()
          {
              delete tm;
          }
      
      public slots:
          void Print()
          {
              qDebug() << "Taz742";
          }
      };
      
      int main(int argc, char *argv[])
      {
          QCoreApplication a(argc, argv);
          Taz742 *L = new Taz742();
          L->tm->start(1000);
          L->connect(L->tm, SIGNAL(timeout()), L, SLOT(Print()));
      
          return a.exec();
      }
      
      

      on the black screen appears --> QObject::connect No such slot QObject::Print()
      what is wrong in my code?

      L Offline
      L Offline
      L.Gogs
      wrote on 11 Aug 2017, 12:45 last edited by
      #2
      This post is deleted!
      M 1 Reply Last reply 11 Aug 2017, 12:46
      0
      • L L.Gogs
        11 Aug 2017, 12:45

        This post is deleted!

        M Offline
        M Offline
        m.sue
        wrote on 11 Aug 2017, 12:46 last edited by
        #3

        Hi @L.Gogs

        Your class does not have a Q_OBJECT macro.

        -Michael.

        L 1 Reply Last reply 11 Aug 2017, 12:47
        2
        • M m.sue
          11 Aug 2017, 12:46

          Hi @L.Gogs

          Your class does not have a Q_OBJECT macro.

          -Michael.

          L Offline
          L Offline
          L.Gogs
          wrote on 11 Aug 2017, 12:47 last edited by
          #4

          @m.sue
          yes I know but when I wrote it, I had errors

          P 1 Reply Last reply 11 Aug 2017, 12:48
          0
          • P Offline
            P Offline
            Pradeep Kumar
            wrote on 11 Aug 2017, 12:48 last edited by
            #5
            class Taz742 : public QObject
            {
            Q_OBJECT 
            public:
                Taz742()
                {
                    tm = new QTimer();
                }
            
                QTimer *tm;
                ~Taz742()
                {
                    delete tm;
                }
            
            public slots:
                void Print()
                {
                    qDebug() << "Taz742";
                }
            };
            

            Thanks,

            Pradeep Kumar
            Qt,QML Developer

            L 1 Reply Last reply 11 Aug 2017, 12:51
            0
            • L L.Gogs
              11 Aug 2017, 12:47

              @m.sue
              yes I know but when I wrote it, I had errors

              P Offline
              P Offline
              Pradeep Kumar
              wrote on 11 Aug 2017, 12:48 last edited by
              #6

              @L.Gogs

              can u post what errors occurred.

              Thanks,

              Pradeep Kumar
              Qt,QML Developer

              L 1 Reply Last reply 11 Aug 2017, 12:49
              1
              • P Pradeep Kumar
                11 Aug 2017, 12:48

                @L.Gogs

                can u post what errors occurred.

                Thanks,

                L Offline
                L Offline
                L.Gogs
                wrote on 11 Aug 2017, 12:49 last edited by
                #7

                @Pradeep-Kumar
                of course :))

                undefined reference to 'vtable for Taz742'

                M 1 Reply Last reply 11 Aug 2017, 12:56
                0
                • P Pradeep Kumar
                  11 Aug 2017, 12:48
                  class Taz742 : public QObject
                  {
                  Q_OBJECT 
                  public:
                      Taz742()
                      {
                          tm = new QTimer();
                      }
                  
                      QTimer *tm;
                      ~Taz742()
                      {
                          delete tm;
                      }
                  
                  public slots:
                      void Print()
                      {
                          qDebug() << "Taz742";
                      }
                  };
                  

                  Thanks,

                  L Offline
                  L Offline
                  L.Gogs
                  wrote on 11 Aug 2017, 12:51 last edited by
                  #8
                  This post is deleted!
                  1 Reply Last reply
                  0
                  • L L.Gogs
                    11 Aug 2017, 12:49

                    @Pradeep-Kumar
                    of course :))

                    undefined reference to 'vtable for Taz742'

                    M Offline
                    M Offline
                    m.sue
                    wrote on 11 Aug 2017, 12:56 last edited by
                    #9

                    Hi @L.Gogs

                    Your Taz742 destructor is virtual, by inheritance from QObject. A class with virtual functions should be defined in its own file: Taz742.cpp and Taz742.h

                    -Michael.

                    L 1 Reply Last reply 11 Aug 2017, 12:59
                    1
                    • M m.sue
                      11 Aug 2017, 12:56

                      Hi @L.Gogs

                      Your Taz742 destructor is virtual, by inheritance from QObject. A class with virtual functions should be defined in its own file: Taz742.cpp and Taz742.h

                      -Michael.

                      L Offline
                      L Offline
                      L.Gogs
                      wrote on 11 Aug 2017, 12:59 last edited by
                      #10

                      @m.sue
                      Thanks...
                      but how can I write connect in main.cpp

                      M 1 Reply Last reply 11 Aug 2017, 13:01
                      1
                      • L L.Gogs
                        11 Aug 2017, 12:59

                        @m.sue
                        Thanks...
                        but how can I write connect in main.cpp

                        M Offline
                        M Offline
                        m.sue
                        wrote on 11 Aug 2017, 13:01 last edited by
                        #11

                        Hi @L.Gogs

                        Just #include the header file. Then you can use your class there

                        -Michael.

                        L 1 Reply Last reply 11 Aug 2017, 13:07
                        1
                        • M m.sue
                          11 Aug 2017, 13:01

                          Hi @L.Gogs

                          Just #include the header file. Then you can use your class there

                          -Michael.

                          L Offline
                          L Offline
                          L.Gogs
                          wrote on 11 Aug 2017, 13:07 last edited by
                          #12

                          @m.sue
                          no no, I want to write connect into main.cpp without any other header or cpp file.

                          M mrjjM 2 Replies Last reply 11 Aug 2017, 13:14
                          0
                          • L L.Gogs
                            11 Aug 2017, 13:07

                            @m.sue
                            no no, I want to write connect into main.cpp without any other header or cpp file.

                            M Offline
                            M Offline
                            m.sue
                            wrote on 11 Aug 2017, 13:14 last edited by m.sue 8 Nov 2017, 16:01
                            #13

                            Hi @L.Gogs

                            To be blunt: You have to comply with the rules of the computer language (C++ in this case) or not use it. You cannot discuss such issues with the compiler/linker.

                            -Michael.

                            1 Reply Last reply
                            1
                            • L L.Gogs
                              11 Aug 2017, 13:07

                              @m.sue
                              no no, I want to write connect into main.cpp without any other header or cpp file.

                              mrjjM Offline
                              mrjjM Offline
                              mrjj
                              Lifetime Qt Champion
                              wrote on 11 Aug 2017, 13:21 last edited by mrjj 8 Nov 2017, 13:22
                              #14

                              @L.Gogs said in Cann't write connect in main.cpp:

                              no no, I want to write connect into main.cpp without any other header or cpp file.

                              https://stackoverflow.com/questions/34928933/why-is-important-to-include-moc-file-at-end-of-a-qt-source-code-file

                              You can hack it but using a .h file is the right way and besides this approach might have issues.
                              I never used it as its non common to only have .cpp file outside school projects.

                              1 Reply Last reply
                              0

                              1/14

                              11 Aug 2017, 12:41

                              • Login

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