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. threads and created objects
Forum Updated to NodeBB v4.3 + New Features

threads and created objects

Scheduled Pinned Locked Moved Solved General and Desktop
26 Posts 4 Posters 2.9k Views 4 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.
  • mzimmersM mzimmers

    @SGaist said in threads and created objects:

    I fixed the typo of parented (damn autocorrect...

    Well, while you're at it..."QTcoSocket?"

    SGaistS Offline
    SGaistS Offline
    SGaist
    Lifetime Qt Champion
    wrote on last edited by
    #21

    @mzimmers said in threads and created objects:

    @SGaist said in threads and created objects:

    I fixed the typo of parented (damn autocorrect...

    Well, while you're at it..."QTcoSocket?"

    Argle........ Done

    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
    0
    • kshegunovK kshegunov

      If you want the QObjects to to be moved alongside with their parent to another thread, then you must pass them the parent. No parent, no way Qt to know whether the object's supposed to be moved.

      mzimmersM Offline
      mzimmersM Offline
      mzimmers
      wrote on last edited by mzimmers
      #22

      @kshegunov I don't know how to do that in this case. If my SerialPort object is defined:

      class SerialPort : public QObject
      {
          Q_OBJECT
      public:
          explicit SerialPort(Worker *parent = nullptr);
      ...
      SerialPort::SerialPort(Worker *parent) : QObject(parent)
      

      Then how do I declare an instance of SerialPort in my worker object? If I do it like this:

          SerialPort m_serial;
      

      Then it doesn't seem to get moved.

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

        The usual: pointer and allocate it in the constructor with a parent.

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

        mzimmersM 1 Reply Last reply
        0
        • SGaistS SGaist

          The usual: pointer and allocate it in the constructor with a parent.

          mzimmersM Offline
          mzimmersM Offline
          mzimmers
          wrote on last edited by
          #24

          @SGaist OK, thanks. I had (incorrectly) inferred from kshegunov's post that it somehow could be done as an ordinary member variable.

          kshegunovK 1 Reply Last reply
          0
          • mzimmersM mzimmers

            @SGaist OK, thanks. I had (incorrectly) inferred from kshegunov's post that it somehow could be done as an ordinary member variable.

            kshegunovK Offline
            kshegunovK Offline
            kshegunov
            Moderators
            wrote on last edited by
            #25

            @mzimmers No the inference is correct. This shall work, shan't it?

            class Worker : public QObject
            {
                Q_OBJECT
            public:
                Worker();
            private:
                SerialPort m_serial;
            };
            
            Worker::Worker()
                : m_serial(this)
            {
            }
            

            Read and abide by the Qt Code of Conduct

            mzimmersM 1 Reply Last reply
            2
            • kshegunovK kshegunov

              @mzimmers No the inference is correct. This shall work, shan't it?

              class Worker : public QObject
              {
                  Q_OBJECT
              public:
                  Worker();
              private:
                  SerialPort m_serial;
              };
              
              Worker::Worker()
                  : m_serial(this)
              {
              }
              
              mzimmersM Offline
              mzimmersM Offline
              mzimmers
              wrote on last edited by
              #26

              @kshegunov well...yes it does. I was missing the " : m_serial(this)" clause. Thanks!

              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