이 질문에서 QImage 객체와 관련된 외부 버퍼 객체의 수명을 유지하는 가장 좋은 방법을 알고 싶습니다.QImage가 생성되어 얕은 이미지가 복사 될 때 프레임 버퍼를 언제 삭제할 수 있습니까?
내가 QT와 압축되지 않은 이미지 파일 뷰어를 개발하고
배경입니다. 파일에서 YV12 데이터를 읽고이를 RGB 프레임 버퍼로 변환하고 QImage 객체를 생성 한 다음 렌더링을 위해 UI 레이어 주위로 전달합니다.
YV12 파일 판독기는 다음과 같습니다.
class YV12Frame
{
public:
YV12Frame(std::string const& fileName)
{
// Initialize m_frameBuffer
// ... (Omitted for brevity)
}
QImage GetQImage()
{
// Build QImage object
return QImage(m_frameBuffer, WIDTH, HEIGHT, QImage::Format_RGB32);
}
private:
unsigned char m_frameBuffer[WIDTH * HEIGHT * 4];
};
QT 문서가 말했듯이
, 우리는 QImage 개체의 수명 기간 동안 유효 YV12Frame 개체를 유지해야합니다.UI 레이어는 얕은 또는 깊은 복사본을 통해 QImage 개체를 복사 할 수 있습니다. 즉, 한 번에 프레임 버퍼를 참조하는 알 수없는 QImage 객체가있을 수 있습니다.
질문
우리는 어떻게하면 안전하게 YV12Frame 개체를 삭제하는 지 알고 있나요?
대답은 이봐, 내가 마지막 QImage 객체가 프레임 버퍼를 참조 오전 내가 삭제하려고 생각합니다 "알려주는 알림 (콜백 또는 무엇이든)가
. 당신은 안전하게 삭제할 수 있습니다 예상 프레임 버퍼를 지금. "
그러나 이러한 알림을 찾을 수 없습니다.