Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Admin от Май 27, 2006, 16:52



Название: QLabel: setPixmal из другого треда!
Отправлено: Admin от Май 27, 2006, 16:52
Есть тред который считывает картинку с камеры и преобразует ее в QImage.

Далее картинку надо отобразить в QLabel
примерно так

Код:
pMainWnd->m_l_hand_image->setPixmap(QPixmap::fromImage(pMainWnd->m_hand_image->scaled(240,320)));


так вот наблюдаются проблемы с синхронизацией!
я дак думаю один тред отрисовывает, а в это время другой меняет pixmap.

Что делать в такой ситуации?


Название: QLabel: setPixmal из другого треда!
Отправлено: Sergeich от Май 27, 2006, 20:35
А че вообще за задача? Отображать видео с камеры? Я бы рисовал через OpenGL, получится намного быстрей.


Название: QLabel: setPixmal из другого треда!
Отправлено: Admin от Май 28, 2006, 14:16
эээ я уже думал над этим!
просто задача такая!
есть 3 камеры! с них идет video

Сделал общий тред для камер, последовательно чтение! Они стали друг друга тормозит. Сделал 3 треда, стало падать в QT!

C openGL тоже думал, но не уверен что он есть в Win/Lin по умолчанию!


Название: QLabel: setPixmal из другого треда!
Отправлено: Sergeich от Май 28, 2006, 16:01
Цитировать
Сделал общий тред для камер, последовательно чтение! Они стали друг друга тормозит. Сделал 3 треда, стало падать в QT!

Это ты че-то с нитками намутил. Нельзя вызывать методы объектов, принадлежащих главной( гуевой ) нитке напрямую из остальных ниток. В 3-ке для этого надо юзать customEvent, в 4-ке можно через слот-сигналы.
Цитировать
C openGL тоже думал, но не уверен что он есть в Win/Lin по умолчанию!

В винде OpenGL присутствует всегда. В линухе обычно ( во всех последних дистрибутивах ) тоже, в крайнем случае всегда можно доустановить.


Название: QLabel: setPixmal из другого треда!
Отправлено: Admin от Май 28, 2006, 16:42
во! золотые слова! буду пробовать!
Цитировать

В 3-ке для этого надо юзать customEvent, в 4-ке можно через слот-сигналы.


Цитировать

В линухе обычно ( во всех последних дистрибутивах ) тоже, в крайнем случае всегда можно доустановить.


просто приходится писать инструкции по установке! но про OPENGL надо будет подумать!