QObject::setParent: Cannot set parent, new parent is in a different thread
emit(mySignal(QString, this);
\fn bool QMutex::locked() Returns true if the mutex is locked by another thread; otherwise returns false. It is generally a bad idea to use this function, because code that uses it has a race condition. Use tryLock() and unlock() instead. \oldcode bool isLocked = mutex.locked(); \newcode bool isLocked = true; if (mutex.tryLock()) { mutex.unlock(); isLocked = false; } \endcode
void run() // второй поток{ // safe_object удалиться автоматически при выходе из run() если на него больше нет других указателей QSharedPointer в любых потоках. QSharedPointer <MyClass> safe_object = QSharedPointer<MyClass>(new MyClass); while(...) { ... // создаём слабую ссылку на объект QWeakPointer <MyClass> weak_p = safe_object.toWeakRef(); emit mySignal(weak_p); }}mainthread::some_slot(QWeakPointer <MyClass> weak_p){ // safe_object удалиться автоматически при выходе из функции если на него больше нет других указателей QSharedPointer в любых потоках. QSharedPointer <MyClass> safe_object = weak_p.toStrongRef(); if( !safe_object.isNull() ) { // здесь гарантированно указатель будет валиден safe_object->foo(); }}
// создаём слабую ссылку на объект QWeakPointer <MyClass> weak_p = safe_object.toWeakRef(); emit mySignal(weak_p);
C++ (Qt)// посылающийemit mySignal(new ClientData(arg1, arg2, &mData)); // отвечает за создание // получательvoid mySlor( ClientData * src ){//.. обработка delete src; // отвечает за удаление}
void MyClass::run() // второй поток{ while(...) { ... emit mySignal(this); }}
void MyClass::run() // второй поток{ // safe_object удалиться автоматически при выходе из run() если на него больше нет других указателей QSharedPointer в любых потоках. QSharedPointer <MyClass> safe_object = QSharedPointer<MyClass>(this); while(...) { ... // создаём слабую ссылку на объект QWeakPointer <MyClass> weak_p = safe_object.toWeakRef(); emit mySignal(weak_p); }}
C++ (Qt)void Thread::run(){ QEventLoop loop; for(;;) { ... loop.processEvents(); ... }}