Ага, понятно. Т.е. экземпляр myQLabel создаеться, как я понимаю, в контрукторе ImageProcessor (а это не есть другой поток!), а юзаеться в другом потоке (метод ImageProcessor::run), верно? И это есть ошибка, про которую я писал выше. Из другого потока к гую обращаться напрямую нельзя, нужно юзали либо ивенты либы сигнал\слот. Когда нибудь приложение вылетит в кору, а вы не будете понимать почему. Советую этот момент переделать.
Upd:
Мой вопрос можно сказать снят. Я посморел реализацию myQLabel::setNextFrame, и все стало понятно:
void myQLabel::setNextFrame(unsigned char *bitmap)
{
memcpy(image, bitmap, size);
QCoreApplication::postEvent(this, new QEvent(QEvent::Paint));
}
Т.к. метод myQLabel::setNextFrame вызываеться из другого потока именно для этого и нужена строка
QCoreApplication::postEvent(this, new QEvent(QEvent::Paint));
Но вопросов стало больше после кода:
int main(int argc, char *argv[])
{
QApplication a( argc, argv );
MainDialog *pDialog = new MainDialog();
ImageProcessor *pProcessor = new ImageProcessor();
a.exec();
return 0;
}
Кто запускает поток ImageProcessor? Для чего нужен MainDialog если он не показан?