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. help with https://doc.qt.io/qt-5/qthread.html
Forum Updated to NodeBB v4.3 + New Features

help with https://doc.qt.io/qt-5/qthread.html

Scheduled Pinned Locked Moved Unsolved General and Desktop
13 Posts 4 Posters 688 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.
  • M micha_eleric
    void MyObject::startWorkInAThread()
    {
        WorkerThread *workerThread = new WorkerThread(this);
        connect(workerThread, &WorkerThread::resultReady, this, &MyObject::handleResults);
        connect(workerThread, &WorkerThread::finished, workerThread, &QObject::deleteLater);
        workerThread->start();
    }
    

    o have tried : QThread() and :QObject

    CThreadController.h file

    #include "CControls.h"
    #include <QObject>
    #include <QThread>
    #include <iostream>
    
    class CThreadController : public QObject
    {
        Q_OBJECT
        CNC::CControls *controlsThread;
    public:
        // constructor
        CThreadController();
        // destructor
        ~CThreadController();
    
        //
        void startThreads();
    };
    
    

    CThreadController.cpp file

    #include "CThreadController.h"
    #include "CControls.h"
    
    CThreadController::CThreadController() : QThread()
    {
    }
    
    CThreadController::~CThreadController()
    {
        controlsThread->quit();
        controlsThread->wait();
    }
    
    void CThreadController::startThreads()
    {
        std::cout << "startThreads() begin\n" << std::flush;
    
        controlsThread = new CNC::CControls(this);
        connect(controlsThread, &QThread::finished, controlsThread, &QObject::deleteLater);
        controlsThread->start();
    
        std::cout << "startThreads() end\n" << std::flush;
    }
    

    CControls.h file

    #include <QObject>
    #include <QThread>
    
    namespace CNC
    {
        class CControls : public QThread
        {
            Q_OBJECT
        public:
            //CControls();
    
            void run() override;
        };
    }
    
    

    this is error i get when CThreadController inherits from QThread or QObject

    error: no matching function for call to ‘CNC::CControls::CControls(CThreadController*)’
       18 |     controlsThread = new CNC::CControl
    

    i commented out constructor, so it should default to inherited constructor

    what is in WorkerThread constructor and what does it inherit from?

    WorkerThread *workerThread = new WorkerThread(this);
    
    jsulmJ Offline
    jsulmJ Offline
    jsulm
    Lifetime Qt Champion
    wrote on last edited by
    #2

    @micha_eleric said in help with https://doc.qt.io/qt-5/qthread.html:

    controlsThread = new CNC::CControls(this);

    You are passing CThreadController* to the constructor, so what do you expect if CControls does not have such a constructor?

    "what is in WorkerThread constructor and what does it inherit from?" - how should we know? You did not show the code for WorkerThread...

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

    M 2 Replies Last reply
    0
    • jsulmJ jsulm

      @micha_eleric said in help with https://doc.qt.io/qt-5/qthread.html:

      controlsThread = new CNC::CControls(this);

      You are passing CThreadController* to the constructor, so what do you expect if CControls does not have such a constructor?

      "what is in WorkerThread constructor and what does it inherit from?" - how should we know? You did not show the code for WorkerThread...

      M Offline
      M Offline
      micha_eleric
      wrote on last edited by
      #3

      @jsulm https://doc.qt.io/qt-5/qthread.html

      1 Reply Last reply
      0
      • jsulmJ jsulm

        @micha_eleric said in help with https://doc.qt.io/qt-5/qthread.html:

        controlsThread = new CNC::CControls(this);

        You are passing CThreadController* to the constructor, so what do you expect if CControls does not have such a constructor?

        "what is in WorkerThread constructor and what does it inherit from?" - how should we know? You did not show the code for WorkerThread...

        M Offline
        M Offline
        micha_eleric
        wrote on last edited by
        #4

        @jsulm " - how should we know? You did not show the code for WorkerThread.." that is the question about https://forum.qt.io/topic/113070/qt-code-of-conduct

        i keep looking at webpage, trying to figure out the answer.

        jsulmJ 1 Reply Last reply
        0
        • M micha_eleric

          @jsulm " - how should we know? You did not show the code for WorkerThread.." that is the question about https://forum.qt.io/topic/113070/qt-code-of-conduct

          i keep looking at webpage, trying to figure out the answer.

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

          @micha_eleric said in help with https://doc.qt.io/qt-5/qthread.html:

          that is the question about https://forum.qt.io/topic/113070/qt-code-of-conduct

          Not sure what you mean.
          I know the path to QThread documentation. I already gave you the answer to your question: there is no such constructor CNC::CControls::CControls(CThreadController*)! Please take a look at the code YOU posted:

          namespace CNC
          {
              class CControls : public QThread
              {
                  Q_OBJECT
              public:
                  //CControls();
          
                  void run() override;
              };
          }
          

          What constructor does this class have and what constructor are you trying to call?

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

          1 Reply Last reply
          0
          • M micha_eleric
            void MyObject::startWorkInAThread()
            {
                WorkerThread *workerThread = new WorkerThread(this);
                connect(workerThread, &WorkerThread::resultReady, this, &MyObject::handleResults);
                connect(workerThread, &WorkerThread::finished, workerThread, &QObject::deleteLater);
                workerThread->start();
            }
            

            o have tried : QThread() and :QObject

            CThreadController.h file

            #include "CControls.h"
            #include <QObject>
            #include <QThread>
            #include <iostream>
            
            class CThreadController : public QObject
            {
                Q_OBJECT
                CNC::CControls *controlsThread;
            public:
                // constructor
                CThreadController();
                // destructor
                ~CThreadController();
            
                //
                void startThreads();
            };
            
            

            CThreadController.cpp file

            #include "CThreadController.h"
            #include "CControls.h"
            
            CThreadController::CThreadController() : QThread()
            {
            }
            
            CThreadController::~CThreadController()
            {
                controlsThread->quit();
                controlsThread->wait();
            }
            
            void CThreadController::startThreads()
            {
                std::cout << "startThreads() begin\n" << std::flush;
            
                controlsThread = new CNC::CControls(this);
                connect(controlsThread, &QThread::finished, controlsThread, &QObject::deleteLater);
                controlsThread->start();
            
                std::cout << "startThreads() end\n" << std::flush;
            }
            

            CControls.h file

            #include <QObject>
            #include <QThread>
            
            namespace CNC
            {
                class CControls : public QThread
                {
                    Q_OBJECT
                public:
                    //CControls();
            
                    void run() override;
                };
            }
            
            

            this is error i get when CThreadController inherits from QThread or QObject

            error: no matching function for call to ‘CNC::CControls::CControls(CThreadController*)’
               18 |     controlsThread = new CNC::CControl
            

            i commented out constructor, so it should default to inherited constructor

            what is in WorkerThread constructor and what does it inherit from?

            WorkerThread *workerThread = new WorkerThread(this);
            
            JKSHJ Offline
            JKSHJ Offline
            JKSH
            Moderators
            wrote on last edited by
            #6

            @micha_eleric said in help with https://doc.qt.io/qt-5/qthread.html:

            i commented out constructor, so it should default to inherited constructor

            No, constructors are not inherited like that. You must implement the relevant constructor.

            Qt Doc Search for browsers: forum.qt.io/topic/35616/web-browser-extension-for-improved-doc-searches

            1 Reply Last reply
            3
            • M Offline
              M Offline
              micha_eleric
              wrote on last edited by
              #7
              void MyObject::startWorkInAThread()
              {
                  WorkerThread *workerThread = new WorkerThread(this);
                  connect(workerThread, &WorkerThread::resultReady, this, &MyObject::handleResults);
                  connect(workerThread, &WorkerThread::finished, workerThread, &QObject::deleteLater);
                  workerThread->start();
              }
              

              what is the WorkerThread constructor suppose to do?
              this is not my code, so i can not show what WorkerThread constructor does.
              can someone tell me what WorkerThread constructor from https://doc.qt.io/qt-6/qthread.html is suppose to do?

              JonBJ 1 Reply Last reply
              0
              • M micha_eleric
                void MyObject::startWorkInAThread()
                {
                    WorkerThread *workerThread = new WorkerThread(this);
                    connect(workerThread, &WorkerThread::resultReady, this, &MyObject::handleResults);
                    connect(workerThread, &WorkerThread::finished, workerThread, &QObject::deleteLater);
                    workerThread->start();
                }
                

                what is the WorkerThread constructor suppose to do?
                this is not my code, so i can not show what WorkerThread constructor does.
                can someone tell me what WorkerThread constructor from https://doc.qt.io/qt-6/qthread.html is suppose to do?

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

                @micha_eleric
                The constructor creates a QThread with MyObject instance as its parent. It is explained in that example, not sure what you are wanting to ask.

                M 1 Reply Last reply
                0
                • JonBJ JonB

                  @micha_eleric
                  The constructor creates a QThread with MyObject instance as its parent. It is explained in that example, not sure what you are wanting to ask.

                  M Offline
                  M Offline
                  micha_eleric
                  wrote on last edited by
                  #9

                  @JonB

                  class WorkerThread : public QThread
                  {
                      Q_OBJECT
                      void run() override {
                          QString result;
                          /* ... here is the expensive or blocking operation ... */
                          emit resultReady(result);
                      }
                  signals:
                      void resultReady(const QString &s);
                  };
                      
                  

                  no constructor stated on https://doc.qt.io/qt-6/qthread.html

                  void MyObject::startWorkInAThread()
                  {
                      WorkerThread *workerThread = new WorkerThread(this);
                  }
                  

                  results in

                  485: error: no matching function for call to ‘WorkerThread(MyObject*)’
                  
                  JonBJ 1 Reply Last reply
                  0
                  • M micha_eleric

                    @JonB

                    class WorkerThread : public QThread
                    {
                        Q_OBJECT
                        void run() override {
                            QString result;
                            /* ... here is the expensive or blocking operation ... */
                            emit resultReady(result);
                        }
                    signals:
                        void resultReady(const QString &s);
                    };
                        
                    

                    no constructor stated on https://doc.qt.io/qt-6/qthread.html

                    void MyObject::startWorkInAThread()
                    {
                        WorkerThread *workerThread = new WorkerThread(this);
                    }
                    

                    results in

                    485: error: no matching function for call to ‘WorkerThread(MyObject*)’
                    
                    JonBJ Offline
                    JonBJ Offline
                    JonB
                    wrote on last edited by JonB
                    #10

                    @micha_eleric said in help with https://doc.qt.io/qt-5/qthread.html:

                    no constructor stated on https://doc.qt.io/qt-6/qthread.html

                    ?
                    The base constructor is QThread::QThread(QObject *parent = nullptr). So what is the definition of class MyObject? Or, perhaps guessing from the error message, have you declared the constructor for WorkerThread? I'm not sure you have. @JKSH answered earlier

                    i commented out constructor, so it should default to inherited constructor

                    No, constructors are not inherited like that. You must implement the relevant constructor.

                    M 1 Reply Last reply
                    0
                    • JonBJ JonB

                      @micha_eleric said in help with https://doc.qt.io/qt-5/qthread.html:

                      no constructor stated on https://doc.qt.io/qt-6/qthread.html

                      ?
                      The base constructor is QThread::QThread(QObject *parent = nullptr). So what is the definition of class MyObject? Or, perhaps guessing from the error message, have you declared the constructor for WorkerThread? I'm not sure you have. @JKSH answered earlier

                      i commented out constructor, so it should default to inherited constructor

                      No, constructors are not inherited like that. You must implement the relevant constructor.

                      M Offline
                      M Offline
                      micha_eleric
                      wrote on last edited by
                      #11

                      @JonB said in help with https://doc.qt.io/qt-5/qthread.html:

                      @micha_eleric said in help with https://doc.qt.io/qt-5/qthread.html:

                      no constructor stated on https://doc.qt.io/qt-6/qthread.html

                      ?
                      The base constructor is QThread::QThread(QObject *parent = nullptr). So what is the definition of class MyObject? Or, perhaps guessing from the error message, have you declared the constructor for WorkerThread? I'm not sure you have. @JKSH answered earlier

                      i commented out constructor, so it should default to inherited constructor

                      No, constructors are not inherited like that. You must implement the relevant constructor.

                      i have no clue what the constructor is suppose to be for WorkerThread, sence the webpage does not say, and i keep asking what it is suppose to be

                      JonBJ 1 Reply Last reply
                      0
                      • M micha_eleric

                        @JonB said in help with https://doc.qt.io/qt-5/qthread.html:

                        @micha_eleric said in help with https://doc.qt.io/qt-5/qthread.html:

                        no constructor stated on https://doc.qt.io/qt-6/qthread.html

                        ?
                        The base constructor is QThread::QThread(QObject *parent = nullptr). So what is the definition of class MyObject? Or, perhaps guessing from the error message, have you declared the constructor for WorkerThread? I'm not sure you have. @JKSH answered earlier

                        i commented out constructor, so it should default to inherited constructor

                        No, constructors are not inherited like that. You must implement the relevant constructor.

                        i have no clue what the constructor is suppose to be for WorkerThread, sence the webpage does not say, and i keep asking what it is suppose to be

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

                        @micha_eleric
                        You should do, because it is the same as the base class one:

                        public: 
                            explicit WorkerThread(QObject *parent = 0) :
                                QThread(parent)
                            {
                            }
                        
                        M 1 Reply Last reply
                        1
                        • JonBJ JonB

                          @micha_eleric
                          You should do, because it is the same as the base class one:

                          public: 
                              explicit WorkerThread(QObject *parent = 0) :
                                  QThread(parent)
                              {
                              }
                          
                          M Offline
                          M Offline
                          micha_eleric
                          wrote on last edited by
                          #13

                          @JonB ty. i was wandering about that based on other pages, but not sure

                          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