데이터 입력 및 출력
이 페이지에서는 Qt를 사용하여 데이터를 가져오고 저장하는 다양한 방법에 대한 개요를 제공합니다.
데이터 저장 및 불러오기
QIODevice 클래스는 모든 파일 및 데이터 저장 장치의 기본 클래스입니다 Qt Core. 데이터 읽기 및 쓰기에 사용되는 모든 클래스는 이 클래스에서 상속됩니다.
장치 예시로는 QFile, QBuffer, QTcpSocket 및 QProcess 등이 있습니다. QFile 는 QIODevice 인터페이스를 사용하여 텍스트, 바이너리 파일 및 리소스를 읽고 쓰는 데 사용됩니다. QFile 는 단독으로 사용하거나, 더 편리하게는 QTextStream 또는 QDataStream 와 함께 사용할 수 있습니다.
QBuffer 클래스는 QByteArray 에 대한 QIODevice 인터페이스를 제공합니다. QTcpSocket 을 사용하면 개발자가 TCP 연결을 설정하고 데이터 스트림을 전송할 수 있습니다. QProcess 은 외부 프로그램을 시작하고 해당 프로세스에서 데이터를 읽고 쓰는 데 사용됩니다.
- 입출력 및 네트워킹 (I/O 관련 클래스 목록)
- 파일 및 데이터 스트림 함수
직렬화된 데이터
Qt API는 여러 사용 사례에 대한 데이터 직렬화를 지원합니다.
- Qt의JSON 지원은 JSON 데이터를 구문 분석, 수정 및 저장하기 위한 사용하기 쉬운 C++ API를 제공합니다.
- QDataStream 클래스는 바이너리 데이터를 QIODevice
- Qt XML C++ Classes XML을 위한 XML 스트리밍 및 DOM 표준의 C++ 구현을 제공합니다.
데이터베이스
이 Qt SQL 모듈은 드라이버 플러그인을 사용하여 여러 데이터베이스 API와 통신합니다. Qt에는 SQLite, MySQL, DB2, Borland InterBase, Oracle, ODBC 및 PostgreSQL용 드라이버가 있습니다. Qt에서 필요한 드라이버를 제공하지 않는 경우, 사용자 정의 드라이버를 개발할 수도 있습니다.
Qt SQL 클래스는 다음 3가지 계층으로 나눌 수 있습니다:
| 계층 | 목적 | 예시 클래스 |
|---|---|---|
|
|
|
SQLite를 제외한 모든 SQL 드라이버를 사용하여 데이터베이스 시스템을 호스팅하는 서버에 연결할 수 있습니다. 내장형 MySQL 서버를 사용하는 경우, 해당 데이터베이스 시스템을 사용하기 위해 별도의 MySQL 서버가 필요하지 않습니다.
SQL 데이터베이스 드라이버를 빌드하는 방법에 대한 지침은 SQL 데이터베이스 드라이버를 참조하십시오.
Qt SQLite 플러그인은 로컬 스토리지에 매우 적합합니다. SQLite는 작은 크기(약 350 KiB)의 C 라이브러리에 포함된 관계형 데이터베이스 관리 시스템입니다. 다른 데이터베이스 관리 시스템과 달리, SQLite는 클라이언트 애플리케이션에서 액세스하는 별도의 프로세스가 아니라 애플리케이션의 필수적인 구성 요소입니다. SQLite는 단일 파일을 기반으로 작동하며, 연결을 열 때 이 파일을 데이터베이스 이름으로 지정해야 합니다. 파일이 존재하지 않으면 SQLite가 파일을 생성하려고 시도합니다.
SQLite에는 다중 사용자 및 다중 트랜잭션과 관련하여 몇 가지 제한 사항이 있습니다. 서로 다른 트랜잭션에서 파일을 읽거나 쓰려고 할 경우, 한 트랜잭션이 커밋되거나 롤백될 때까지 애플리케이션이 멈출 수 있습니다.
드라이버 설정이 완료되면 QSqlQueryModel, QSqlTableModel, QSqlRelationalTableModel 클래스를 사용하여 데이터에 접근할 수 있습니다. QSqlTableModel 및 QSqlRelationalTableModel 은 Qt의 항목 뷰(item view)와 함께 사용할 수 있는 편집 가능한 모델을 제공합니다. QSqlTableModel 은 단일 테이블에 대한 읽기/쓰기 접근 권한을 제공하는 반면, QSqlRelationalTableModel 은 주 테이블(외래 키가 있는 테이블이 아님)에 대한 읽기/쓰기 접근 권한을 제공합니다.
다음 페이지에는 애플리케이션에 SQL을 통합하는 방법에 대한 정보가 포함되어 있습니다:
Qt의 XML 지원
Qt XML 스트림을 읽고 구문 분석하며, 해당 스트림에 데이터를 기록할 수 있는 API를 제공합니다. 다음의 주요 클래스들은 필요한 인프라를 제공함으로써 이러한 작업을 용이하게 합니다:
- QDomDocument `class`는 전체 XML 문서를 문서 트리로 표현하며, 문서의 데이터에 대한 기본 접근 기능을 제공합니다.
- 이 클래스에는 문서 데이터를 생성하기 위한 여러 함수가 있습니다. 예를 들어, ` createElement()`, ` createTextNode()`, ` createComment()`, ` createCDATASection()`, ` createProcessingInstruction()`, ` createAttribute()` 및 ` createEntityReference()` 등이 있습니다.
- QXmlStreamReader 클래스는 XML을 읽기 위한 파서를 제공합니다. 이 파서는 외부 파싱된 엔티티를 포함하지 않는, 구문적으로 올바른 XML 1.0 파서입니다.
- 이 클래스는 XML 네임스페이스를 인식하고 처리합니다. 예를 들어, StartElement의 경우 namespaceUri()는 해당 요소가 속한 네임스페이스를 반환하고, name()은 요소의 로컬 이름을 반환합니다. namespaceUri()와 name()의 조합을 통해 요소를 고유하게 식별할 수 있습니다.
- 전체 XML 문서 트리를 메모리에 저장하지 않으므로 CPU 부하가 크지 않습니다. 이 클래스는 토큰이 보고되는 시점에 해당 토큰만 저장합니다.
- QXmlStreamWriter 클래스는 XML 작성자에게 간단한 스트리밍 API를 제공합니다. 이는 XML 작성을 위한 QXmlStreamReader 의 대응 클래스이며, setDevice()로 지정된 QIODevice 에서 작동합니다.
- 이 클래스는 작성하려는 모든 XML 토큰이나 이벤트에 대해 전용 함수를 제공하는 간단한 API입니다.
- 이 클래스는 요소나 속성을 기록할 때 지정된 namespaceUri에 따라 네임스페이스 접두사를 자동으로 처리합니다. 특정 표준 접두사를 사용해야 하는 경우, writeNamespace() 또는 writeDefaultNamespace()를 통해 네임스페이스를 수동으로 선언함으로써 라이터가 해당 접두사를 사용하도록 강제할 수 있습니다.
- 생성된 XML 데이터에 줄 바꿈과 들여쓰기를 추가하여 가독성을 높일 수 있습니다. 이 기능은 auto-formatting 속성을 통해 활성화할 수 있습니다.
다음 항목에서는 Qt XML 지원에 대한 자세한 내용을 확인할 수 있습니다:
Qt에서의 JSON
JSON은 읽기와 구문 분석이 쉬운 텍스트 기반의 데이터 교환을 위한 개방형 표준입니다. 이는 ‘객체’라고 불리는 간단한 데이터 구조와 연관 배열을 표현하는 데 사용됩니다. JavaScript와 관련이 있지만, 언어에 구애받지 않는 표기 형식입니다.
객체는 다음 두 가지 형태를 가질 수 있습니다:
| 이름/값 쌍의 모음 | 값의 순서 있는 목록 |
|---|---|
| |
로컬 스토리지
로컬 스토리지 API를 사용하면 QML 및 JavaScript에서 SQL 데이터베이스의 로컬 오프라인 스토리지에 액세스할 수 있습니다.
이러한 데이터베이스는 사용자별 및 QML별이지만, 모든 QML 애플리케이션에서 액세스할 수 있습니다. 이 데이터베이스는 QDeclarativeEngine::offlineStoragePath()의 Databases 하위 디렉터리에 SQLite 데이터베이스(SQL 데이터베이스 드라이버)로 저장됩니다.
이 API는 2009년 10월 29일자 W3C 작업 초안(HTML5 웹 데이터베이스 API)에 정의된 HTML5 웹 데이터베이스 API의 동기식 API를 준수합니다.
로컬 스토리지 API 사용에 대한 기본적인 예제는 Qt Quick Examples - Local Storage를 참조하십시오.
QSettings 클래스
QSettings 클래스는 애플리케이션 설정을 영구적으로 저장해 줍니다. 애플리케이션은 일반적으로 이전 세션의 설정을 기억합니다.
설정은 플랫폼에 따라 다르게 저장됩니다. 예를 들어, Windows에서는 레지스트리에 저장되는 반면, macOS에서는 XML 파일에 저장됩니다.
QSettings QSettings 을 사용하면 애플리케이션 설정을 이식성 있게 저장하고 복원할 수 있습니다. 객체의 생성 및 소멸은 가볍고 빠릅니다. 객체를 생성할 때는 애플리케이션 이름뿐만 아니라 조직 이름도 함께 지정하는 것이 좋습니다. 예: QSettings
QSettings settings("MyCompany", "Accountancy");리소스
Qt 리소스 시스템은 애플리케이션 실행 파일에 바이너리 파일을 저장하기 위한 플랫폼 독립적인 메커니즘입니다. 이는 애플리케이션에서 특정 파일이나 파일 집합을 자주 필요로 할 때 유용합니다. 또한 해당 파일이 손실되는 것을 방지해 줍니다.
리소스 데이터는 바이너리에 컴파일되어 애플리케이션 코드에서 즉시 액세스할 수 있도록 하거나, 애플리케이션이 동적으로 바이너리 리소스를 생성하여 리소스 시스템에 등록할 수도 있습니다.
기본적으로 리소스는 소스 트리에 저장된 것과 동일한 파일 이름에 ‘ :/ ’ 접두사를 붙여, 또는 ‘qrc’ 스키마를 사용하는 URL을 통해 애플리케이션 코드에서 접근할 수 있습니다.
연결성
파일 아카이빙
아카이브 파일은 일반적으로 드라이브에서 차지하는 공간을 줄이기 위해 압축된 파일이나 디렉터리의 모음입니다. 아카이브 파일의 예로는 ZIP, TAR, RAR 및 7z가 있습니다.
Qt는 zlib로 생성된 아카이브를 지원합니다( qCompress() 및 qUncompress() 참조).
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.