반응형

앞서 포스팅한 DockWidget의 상태 정보를 저장하기 위해 Geometry 정보 및 state를 Json File에 기록하기 위한 시도를 진행했다.

 

2019/05/14 - [Programming/QT] - [QT] QDockWidget의 위치 및 상태 저장

 

[QT] QDockWidget의 위치 및 상태 저장

본 문서는 QDockwidget을 이용하여 프로그램을 개발하던 중, 프로그램을 재시작 하였을 때 현재 설정된 DockWidget의 상태(현시여부, 도킹위치, 크기 등)를 저장하고 불러오는 방법에 대해 리서치 및 시도한 것들..

blog.rixa.kr

결과적으로는, QJsonValue에 ByteArray를 그대로 집어넣는것은 작동하지 않으며, Base64와 같은 방식으로 인코딩한 뒤 기록을 해야한다.

 


QByteArray -> QVariant -> QJsonValue

QJsonValue는 QByteArray를 직접적으로 받는 방법이 없으며, 이를 처리하기 위해 QVariant로 변환 후 QJsonValue로 변환하는 방법을 시도해 보았다.

 

결과적으로, Empty string으로 저장이 되며, 적합하지 않은 방식이다.

 


QByteArray -> QString -> QJsonValue

ByteArray가 직접적으로 저장되지 않는다면, String으로 변환 후 처리하는 방식은 어떨까? 하며 시도를 해보았다.

 

이 방식은, ByteArray에 저장된 데이터의 형태에 따라 될수도, 안될수도 있다.

 

 

기본적으로 QString은 Ascii code를 저장하며, data의 형식에 따라 온전히 string으로 변환이 될 수도, 아닐수도 있다.

 


QByteArray -> Base64 string -> QJsonValue

QByteArray를 base64 방식으로 인코딩하여 저장하는 방법이다.

base64의 개념은 다음과 같다.

컴퓨터 분야에서 쓰이는 Base 64 (베이스 육십사)란 8비트 이진 데이터(예를 들어 실행 파일이나, ZIP 파일 등)를 문자 코드에 영향을 받지 않는 공통 ASCII 영역의 문자들로만 이루어진 일련의 문자열로 바꾸는 인코딩 방식을 가리키는 개념이다.
출처 : https://ko.wikipedia.org/wiki/%EB%B2%A0%EC%9D%B4%EC%8A%A464

 

위의 내용과 같은 특성을 통해 String형식으로 변환하되, 별도의 인코딩 과정을 거치면서 어떤 데이터를 담고 있더라도, 누락되는 부분없이 깔끔하게 저장할 수 있게 된다.

 

 

반응형

댓글을 달아 주세요