QThread успадковує QObject. Він випромінює сигнали, щоб вказати, що потік почав або закінчив виконання, а також надає кілька слотів. Більш цікавим є те, що QObjects можна використовувати в кількох потоках, видавати сигнали, які викликають слоти в інших потоках, і надсилати події до об’єктів, які «живуть» в інших потоках.

Об'єкт QThread керує одним потоком керування в програмі. QThreads починають виконуватися в run(). За замовчуванням run() запускає цикл подій шляхом виклику exec() і запускає цикл подій Qt всередині потоку. Ви можете використовувати робочі об’єкти, перемістивши їх у потік за допомогою QObject::moveToThread().

QObject є серце об’єктної моделі Qt. Головною особливістю цієї моделі є дуже потужний механізм безперебійного зв’язку між об’єктами, які називаються сигналами та слотами. Ви можете підключити сигнал до слота за допомогою connect() і зруйнувати з’єднання за допомогою disconnect().

Це означає щоб відповісти цитатою в твіті/ланцюжку. Проголосуйте за 1 голос проти Відповідь. Більше від r/ThreadsApp.

Ви вже отримали відповідь на StackOverflow, але повторюю: він правий, QObject завжди передається від C++ до QML за вказівником, а Q_GADGET завжди передається за значенням. Це означає, що Q_GADGET підходить лише для невеликих самодостатніх класів, оскільки він завжди буде скопійований.

QThread успадковує QObject. Він випромінює сигнали, щоб вказати, що потік почав або закінчив виконання, а також надає кілька слотів. Більш цікавим є те, що QObjects можна використовувати в кількох потоках, видавати сигнали, які викликають слоти в інших потоках, і надсилати події до об’єктів, які «живуть» в інших потоках.