inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[입문] Qt 6 프로그래밍 2편

QT로 이미지나 json 파일 가져올때

434

김재우

작성한 질문수 10

1

강사님 안녕하세요
강의를 볼 수 있는 기간이 얼마 남지 않아 조금한 마음에 질문드립니다.
 
이미치 처리나 JSON파일 처리 강의를 볼때 이미지 파일이나 JSON 파일을 리소스에 등록시키고 가져 오던데
꼭 리소스에 등록을 해야만 하나요? 파일 있는 곳이 프로젝트 파일이이 있는 곳이면 상대적 경로로 가져오면 될 것 같은데
방법을 문의 드립니다.
 
아래 파일은 제가 파싱하고자 하는 JSON 파일입니다. 우선 start 오브젝트의 값들을 가져오고자 하느데
다음과 같이 하니 동작이 되지 않습니다. 문제점 지적 부탁드립니다.
parseJSON(const QString &data)
QJsonDocument jsonResponse = QJsonDocument::fromJson(data.toLocal8Bit()); QJsonObject totalobj = jsonResponse.object(); QJsonObject startobj = totalobj["start"].toObject(); QString Str1 = startobj["version"].toString(); QString Str2 = startobj["system_info"].toString(); ui->textEdit->append(Str1); ui->textEdit->append(Str2);
 
JSON 파일에 오브젝트에 오브젝트를 얻어 오는 방법이 어떻게 되는 지 궁금합니다.
예로 보여주신 것은 단 하나의 오브텍트를 가지는 JSON 파일인데 보통 계층이 여러개가 되는 JSON파일은
어떤식으로 파싱을 해야 하나요?
 
아래 JSON파일이 이렇게 밖에 첨부되지 않는데 적당한 에디터로 옮겨야 할 것 같습니다. 죄송합니다.
 
 
 
->json 파일
{ "start": { "connected": [{ "socket": 4, "local_host": "127.0.0.1", "local_port": 53559, "remote_host": "127.0.0.1", "remote_port": 5201 }], "version": "iperf 3.1.3", "system_info": "CYGWIN_NT-10.0 ▒▒▒▒▒▒ 2.5.1(0.297/5/3) 2016-04-21 22:14 x86_64", "timestamp": { "time": "Tue, 19 Jul 2022 05:49:51 GMT", "timesecs": 1658209791 }, "connecting_to": { "host": "127.0.0.1", "port": 5201 }, "cookie": "▒▒▒▒▒▒.1658209791.845554.28a3c74361a", "tcp_mss_default": 0, "test_start": { "protocol": "TCP", "num_streams": 1, "blksize": 131072, "omit": 0, "duration": 5, "bytes": 0, "blocks": 0, "reverse": 0 } }, "intervals": [{ "streams": [{ "socket": 4, "start": 0, "end": 1.000721, "seconds": 1.000721, "bytes": 2595618816, "bits_per_second": 2.074999e+10, "omitted": false }], "sum": { "start": 0, "end": 1.000721, "seconds": 1.000721, "bytes": 2595618816, "bits_per_second": 2.074999e+10, "omitted": false } }, { "streams": [{ "socket": 4, "start": 1.000721, "end": 2.005017, "seconds": 1.004296, "bytes": 2570846208, "bits_per_second": 2.047880e+10, "omitted": false }], "sum": { "start": 1.000721, "end": 2.005017, "seconds": 1.004296, "bytes": 2570846208, "bits_per_second": 2.047880e+10, "omitted": false } }, { "streams": [{ "socket": 4, "start": 2.005017, "end": 3.011280, "seconds": 1.006263, "bytes": 2549088256, "bits_per_second": 2.026578e+10, "omitted": false }], "sum": { "start": 2.005017, "end": 3.011280, "seconds": 1.006263, "bytes": 2549088256, "bits_per_second": 2.026578e+10, "omitted": false } }, { "streams": [{ "socket": 4, "start": 3.011280, "end": 4.000203, "seconds": 0.988923, "bytes": 2492203008, "bits_per_second": 2.016095e+10, "omitted": false }], "sum": { "start": 3.011280, "end": 4.000203, "seconds": 0.988923, "bytes": 2492203008, "bits_per_second": 2.016095e+10, "omitted": false } }, { "streams": [{ "socket": 4, "start": 4.000203, "end": 5.008456, "seconds": 1.008253, "bytes": 2597322752, "bits_per_second": 2.060850e+10, "omitted": false }], "sum": { "start": 4.000203, "end": 5.008456, "seconds": 1.008253, "bytes": 2597322752, "bits_per_second": 2.060850e+10, "omitted": false } }], "end": { "streams": [{ "sender": { "socket": 4, "start": 0, "end": 5.008456, "seconds": 5.008456, "bytes": 12805079040, "bits_per_second": 2.045354e+10 }, "receiver": { "socket": 4, "start": 0, "end": 5.008456, "seconds": 5.008456, "bytes": 12804882391, "bits_per_second": 2.045322e+10 } }], "sum_sent": { "start": 0, "end": 5.008456, "seconds": 5.008456, "bytes": 12805079040, "bits_per_second": 2.045354e+10 }, "sum_received": { "start": 0, "end": 5.008456, "seconds": 5.008456, "bytes": 12804882391, "bits_per_second": 2.045322e+10 }, "cpu_utilization_percent": { "host_total": 97.261207, "host_user": 2.194162, "host_system": 95.067046, "remote_total": 3.763427, "remote_user": 0.787845, "remote_system": 2.975581 } } }

qt GUI

답변 1

0

김대진

안녕하세요. 김재우님,

제가 JSON 파일을 리소스에 등록해 사용한것은 구현 설명을 쉽게 하려고 한것입니다. 

resource 에 등록하지 않고 사용하셔도 됩니다. 

0

김재우

죄송합니다. 아무리 인터넷을 찾고 도움말을 봐도 정확하게 나오지 않네요

혹시 Qt 에서 프로젝트파일이 위치한 폴더에 파일을 읽고 싶은때 경로지정을 어떻게 해야 할까요?

0

김대진

프로젝트가 있는 위치는 알수없구요. 실행파일이 있는 위치는 알수있습니다.

0

김재우

QCoreApplication::applicationDirPath() 

이걸써서 실행파일 폴더는 알아냈습니다. 프로젝트는 알 수 없군요.

감사합니다. 

Build system의 Obs 에 관한 질문

1

27

2

로드맵 재수강 로드맵 할인문의

1

43

2

강의 재수강 문의

1

53

2

강의 연장 문의

1

77

2

강의 연장 질문

1

60

2

22강 후반부와 23강 전반부의 내용이 겹칩니다.

1

58

1

코드 크가가 너무 작은대 이거 화면확대 어떻게 하나요?

0

166

4

강의 자료 pdf 다운로드 할 수 있을까요?

0

92

3

혹시 강의 연장 가능할까요? ㅠㅠ

1

73

2

custom Widget 강의 에서 알려주신 promoted widgets 질문 드립니다.

1

118

2

QML로 만든 파일도 똑같이 설치판 제작하면 되나요?

0

171

2

'Re-entrancy' 사용 시 프로그램 속도 문의드립니다.

1

114

2

QImage에서 이미지가 안불러와집니다.

1

318

2

Android 폰에서 개발환경 설정과 예제 App 구현 질문드립니다.

1

304

1

'Re-entrancy를 만족하는 Thread 예제 구현' 에서 질문있습니다.

1

363

2

크로마키 영상처리 소스코드 구현 (2/2편) 에러가 발생합니다.

1

362

1

Writing QML Extensions with C++ 내용에 대해서 질문드립니다!

1

346

1

Qt Creator 기능 질문드립니다.

1

340

1

위젯프로그램 위에 챠트 띄우기

1

558

1

QT로 구현한 프로그램 실행관련 및 추가질문

1

1361

3

Go to slots 을 사용했을때 connect 함수 위치

1

358

1

Qt Quick 모듈의 해석 질문드립니다.

3

362

2

QT에서 그래프 챠트 그리는 방법 문의

2

1866

2

Window에서 프로그래밍한 것을 리눅스로 옮기는 방법

2

390

1