= new QObject(this);
                  
                  
                     QObject ptrObject2 = new QObject(this);
                  
                  
                     QObject ptrObject3 = new QObject(this);
                  
                  
                  }
                  
                  
                  
                  
                  
                  Вот два участка кода, в одном я создаю объект унаследованный от QObject, в другом участке кода, я делаю инициализацию этого объекта путём создания в этом объекте дочерних QObject'ов.
                  
                  
                  Мне пишет вот такую ошибку, на каждое создание дочернего QObject
                  
                  
                  (Parent is MyObject(0x1ec949090c0), parent's thread is QThread(0x1ec8a678f80), current thread is QThread(0x1ec8a5f7c60)
                  
                  
                  QObject: Cannot create children for a parent that is in a different thread.
                  
                  
                  
                  
                  
                  Что я делаю не так?
                  
                  
                
Сделай initialization слототом. connect(newThread, &QThread::started, ptrObject, &MyObject::initialization); Тогда initialization запустится в другом потоке. Сейчас ты initialization запускаешь в текущем потоке. Даже если поток стартует и ты так же вызовешь initialization, то все равно в текущем потоке выполнится
 Дмитрий
                          Воронин
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Дмитрий
                          Воронин
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  А, точно, invokeMethod надо, спасибо
Или так, если уверен что поток стартовал
Объект перемещается в другой поток и почему то управляется из этого же потока?
 Дмитрий
                          Воронин
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Дмитрий
                          Воронин
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  А ни как нельзя сделать так что бы дочерние объекты перемещались в другой поток, или хотя бы что бы после того как тот объект который я считаю главным уничтожится, не унаследованные дочерние тоже умерли
 Дмитрий
                          Воронин
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Дмитрий
                          Воронин
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  Ты задал родителя трем объектам. Они тоже удалятся, когда главный объект удалится
 Дмитрий
                          Воронин
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Дмитрий
                          Воронин
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  Я хочу их родителю, родителя задать, и патом его переместить в другой поток
Обычно я создаю главный объект, перемещаю в другой поток. Потом вызываю в новом потоке типа init функцию, где создаю разные объекты, которые нужны для другого потока. Таймеры, сокеты, свои объекты и т.д. Дальше все само по себе работает в другом потоке
 Дмитрий
                          Воронин
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Дмитрий
                          Воронин
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  Если я напишу MyObject* ptrObject = new MyObject(this); то Qt выдаст ошибку QObject::moveToThread: Cannot move objects with a parent
Обсуждают сегодня