Russian Qt Forum
Май 06, 2024, 11:58 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: Ошибка  (Прочитано 14635 раз)
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4727



Просмотр профиля WWW
« Ответ #15 : Декабрь 19, 2011, 16:24 »

Что не получается никак разобраться
с  ошибкой QCoreApplication::postEvent: Unexpected null receiver
 Непонимающий
ты у себя в коде, где вызываешь postEvent, первый параметр нулём не ставишь случайно?
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
demaker
Птица говорун
*****
Offline Offline

Сообщений: 960


Просмотр профиля
« Ответ #16 : Декабрь 20, 2011, 12:48 »

postEvent нигде не вызываю

у меня многопоточный сервер и при одключении одного из клиентов в консоле выдается этот сообщение 

QCoreApplication::postEvent: Unexpected null receiver  Непонимающий
Записан
BRE
Гость
« Ответ #17 : Декабрь 20, 2011, 12:58 »

у меня многопоточный сервер и при одключении одного из клиентов в консоле выдается этот сообщение 

QCoreApplication::postEvent: Unexpected null receiver  Непонимающий
А ты вызываешь deleteLater?
И наверное для зануленного уже объекта? Да?
Записан
demaker
Птица говорун
*****
Offline Offline

Сообщений: 960


Просмотр профиля
« Ответ #18 : Декабрь 20, 2011, 13:40 »

Да, deleteLater вызываю.
Но не для зануленнрго объекта, наверное Непонимающий
Записан
demaker
Птица говорун
*****
Offline Offline

Сообщений: 960


Просмотр профиля
« Ответ #19 : Декабрь 20, 2011, 13:41 »

Зануленный, это удаленный Непонимающий
Записан
BRE
Гость
« Ответ #20 : Декабрь 20, 2011, 13:50 »

Зануленный, это удаленный Непонимающий
Перед deleteLater вставь qDebug и все увидишь:
Код
C++ (Qt)
qDebug() << obj;
obj->deleteLater()
 

Зануленный это равный 0.
Код
C++ (Qt)
QObject *obj = 0;
obj->deleteLater();
 
увидишь то же сообщение.
Записан
demaker
Птица говорун
*****
Offline Offline

Сообщений: 960


Просмотр профиля
« Ответ #21 : Декабрь 20, 2011, 13:57 »

Да нет он мне выдал TModBusThread(0x99aeac0)  Непонимающий
Записан
BRE
Гость
« Ответ #22 : Декабрь 20, 2011, 13:59 »

Да нет он мне выдал TModBusThread(0x99aeac0)  Непонимающий
Значит не угадали, ищи еще что-то подобное. Улыбающийся
Записан
demaker
Птица говорун
*****
Offline Offline

Сообщений: 960


Просмотр профиля
« Ответ #23 : Декабрь 20, 2011, 14:07 »

Да  Улыбающийся буду пытаться найти.
Записан
demaker
Птица говорун
*****
Offline Offline

Сообщений: 960


Просмотр профиля
« Ответ #24 : Декабрь 22, 2011, 14:04 »

Отслеживаю ошибку в дебагере и она вылетает когда проходит
команду QThtread::quit(); Что это могло бы значить Непонимающий
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #25 : Декабрь 22, 2011, 14:47 »

Отслеживаю ошибку в дебагере и она вылетает когда проходит
команду QThtread::quit(); Что это могло бы значить Непонимающий
Для начала перекрываете деструктор, напр
Код
C++ (Qt)
QMyThtread::~QMyThtread( void )
{
qDebug() << "destroying" << this;
}
 
Др словами - убедитесь что объект не был удален
Записан
demaker
Птица говорун
*****
Offline Offline

Сообщений: 960


Просмотр профиля
« Ответ #26 : Декабрь 22, 2011, 18:53 »

 Улыбающийся попробую
Записан
Kyrt_God
Гость
« Ответ #27 : Февраль 02, 2012, 16:31 »

Если еще актуально.
Код:
connect(mythread, SIGNAL(finished()), this, SLOT(removemythread()), Qt::DirectConnection)
Qt::DirectConnection используется по умолчанию если не задан. Это верно для одного потока.Для разных потоков используй другие типы соединения.

Цитировать
Qt::DirectConnection - при генерации слот получает сигнал незамедлительно.
Qt::QueuedConnection - при генерации сигнал помещается в очередь обработки событий.
Qt::BlockingQueuedConnection - при генерации сигнал помещается в очередь обработки событий. Пока слот не получит сигнал текущий поток блокируется. Данный тип соединения следует применять только для получателя в другом потоке.(Ошибочное использование данного типа соединения может привести к мертвым блокировкам(dead locks) в программе.)
Qt::AutoConnection - если отправитель и получатель находятся в одном потоке, то будет использован Qt::DirectConnection, иначе используется Qt::QueuedConnection.
Записан
mutineer
Гость
« Ответ #28 : Февраль 02, 2012, 17:16 »

Оффтоп:
По умолчанию используется AutoConnection

Код
C++ (Qt)
bool QObject::connect ( const QObject * sender, const char * signal, const char * method, Qt::ConnectionType type = Qt::AutoConnection ) const
« Последнее редактирование: Февраль 02, 2012, 17:20 от mutineer » Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.169 секунд. Запросов: 22.