2012-06-18 5 views
2

QLabel을 사용하여 가상 비디오 스트림을 표시합니다. 픽셀에 대한 광범위한 계산이 있기 때문에 QImage bits() 함수를 사용하고 픽셀 맵으로 변환하여 QLabel에 표시합니다. 지금까지 내가 사용했다 :QLabel은 Pixmap으로 새로 고침하지 않습니다. convertFromImage

for(...) 
{ 
    computeImage(&myImage); 
    myLabel->setPixmap(QPixmap::fromImage(myImage)); 
} 

을하지만, QPixmap::fromImage(...) 기능은 항상 새로운 QPixmap 객체를 생성하기 때문에, 내가 시도 다음보다 효율적으로해야 사람 :

QPixmap myPixmap; 
for(...) 
{ 
    computeImage(&myImage); 
    bool b = myPixmap.convertFromImage(myImage); 
    myLabel->setPixmap(myPixmap); 
} 

그것은 최초의 디스플레이를 위해 잘 작동하지만, 그 후에는 갱신되지 않습니다. "b"변수는 항상 true이므로 변환이 잘 수행됩니다. 심지어 repaint() 또는 update() 레이블 시도했지만 작동하지 않습니다. 레이블에는 첫 번째 이미지가 영원히 계속 표시됩니다.

+0

혹시 이것을 알아 냈습니까? 나는 똑같은 문제가있다 ... – daaxix

답변

1

초당 프레임 수는 몇입니까? 이미지 사이에 간격을 두어 볼 수 있습니까? 나는 update()도 필요하다고 생각한다.

+0

나는 당신이 옳을 것이라고 생각한다. 그것은 아마도 반복적 인 반복 일 뿐이며 이벤트 루프 처리를시키지 않을 것입니다. qApp.processEvents에 대한 호출이 필요할 수도 있습니다. – jdi

+0

실제로 for 루프는 코드 예제를 단순화하기위한 것입니다. (죄송합니다) 사실 for 루프는 초당 약 7 번 호출되는 슬롯 기능입니다. 그래서 시간 문제가 아닙니다. 나는 또한 이전에 언급했듯이 이미 uptate()를 시도했지만 작동하지 않았다. 나는 심지어 qApp.processEvents를 넣었고 여전히 작동하지 않는다. 다른 생각? 감사 – user1159845

관련 문제