QBuffer Class
QBuffer 클래스는 QByteArray 에 대한 QIODevice 인터페이스를 제공합니다. 더 보기...
| 헤더: | #include <QBuffer> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake: | QT += core |
| 상속: | QIODevice |
- 상속된 멤버를 포함한 모든 멤버 목록
- QBuffer는 입출력 및 네트워킹의 일부입니다.
참고: 이 클래스의 모든 함수는 재진입 가능합니다.
공개 함수
| QBuffer(QObject *parent = nullptr) | |
| QBuffer(QByteArray *byteArray, QObject *parent = nullptr) | |
| virtual | ~QBuffer() |
| QByteArray & | buffer() |
| const QByteArray & | buffer() const |
| const QByteArray & | data() const |
| void | setBuffer(QByteArray *byteArray) |
| void | setData(const QByteArray &data) |
| void | setData(const char *data, qsizetype size) |
재구현된 공용 함수
| virtual bool | atEnd() const override |
| virtual bool | canReadLine() const override |
| virtual void | close() override |
| virtual bool | open(QIODeviceBase::OpenMode mode) override |
| virtual qint64 | pos() const override |
| virtual bool | seek(qint64 pos) override |
| virtual qint64 | size() const override |
재구현된 보호된 함수
| virtual qint64 | readData(char *data, qint64 len) override |
| virtual qint64 | writeData(const char *data, qint64 len) override |
상세 설명
QBuffer를 사용하면 QIODevice 인터페이스를 통해 QByteArray 에 액세스할 수 있습니다. QByteArray 는 표준 랜덤 액세스 파일과 동일하게 처리됩니다. 예:
QBuffer buffer;
char ch;
buffer.open(QBuffer::ReadWrite);
buffer.write("Qt rocks!");
buffer.seek(0);
buffer.getChar(&ch); // ch == 'Q'
buffer.getChar(&ch); // ch == 't'
buffer.getChar(&ch); // ch == ' '
buffer.getChar(&ch); // ch == 'r'기본적으로 QBuffer를 생성하면 내부 QByteArray 버퍼가 자동으로 생성됩니다. buffer()를 호출하여 이 버퍼에 직접 접근할 수 있습니다. 또한 setBuffer()를 호출하거나 배열을 QBuffer의 생성자에 전달하여 기존 QByteArray 와 함께 QBuffer를 사용할 수도 있습니다.
open()을 호출하여 버퍼를 엽니다. 그런 다음 write() 또는 putChar()을 호출하여 버퍼에 데이터를 쓰고, read(), readLine(), readAll() 또는 getChar()을 호출하여 버퍼에서 데이터를 읽을 수 있습니다. size()은 버퍼의 현재 크기를 반환하며, seek()을 호출하여 버퍼 내의 임의 위치로 이동할 수 있습니다. 버퍼에 대한 액세스를 모두 마친 후에는 close()를 호출합니다.
다음 코드 예제는 QDataStream 및 QBuffer를 사용하여 QByteArray 에 데이터를 쓰는 방법을 보여줍니다:
QByteArray byteArray;
QBuffer buffer(&byteArray);
buffer.open(QIODevice::WriteOnly);
QDataStream out(&buffer);
out << palette;실질적으로, 애플리케이션의 ` QPalette `를 바이트 배열로 변환하는 것입니다. ` QByteArray`에서 데이터를 읽는 방법은 다음과 같습니다:
QPalette palette;
QBuffer buffer(&byteArray);
buffer.open(QIODevice::ReadOnly);
QDataStream in(&buffer);
in >> palette;QTextStream 또한 ` QDataStream `는 ` QByteArray `을 인수로 받아 내부적으로 `QBuffer`를 생성하는 편리한 생성자를 제공합니다.
QBuffer는 버퍼에 새로운 데이터가 도착하면 readyRead() 신호를 방출합니다. 이 신호에 연결하면 QBuffer를 사용하여 데이터를 처리하기 전에 임시로 저장할 수 있습니다. 또한 QBuffer는 버퍼에 새로운 데이터가 기록될 때마다 bytesWritten() 신호를 방출합니다.
QFile, QDataStream, QTextStream 및 QByteArray도 참조하십시오 .
멤버 함수 설명서
[explicit] QBuffer::QBuffer(QObject *parent = nullptr)
지정된 ` parent`를 사용하여 빈 버퍼를 생성합니다. ` setData()`를 호출하여 버퍼에 데이터를 채우거나, 쓰기 모드로 버퍼를 열고 ` write()`를 사용할 수 있습니다.
open()도 참조하십시오 .
QBuffer::QBuffer(QByteArray *byteArray, QObject *parent = nullptr)
byteArray 가 가리키는 QByteArray 를 내부 버퍼로 사용하고, 지정된 parent 를 갖는 QBuffer를 생성합니다. 호출자는 QBuffer가 소멸되거나 setBuffer()가 호출되어 버퍼가 변경될 때까지 byteArray 가 유효한 상태를 유지하도록 보장해야 합니다. QBuffer는 QByteArray 에 대한 소유권을 인수하지 않습니다.
버퍼를 쓰기 전용 모드나 읽기-쓰기 모드로 열고 QBuffer에 데이터를 쓰면, byteArray 가 수정됩니다.
예시:
QByteArray byteArray("abc");
QBuffer buffer(&byteArray);
buffer.open(QIODevice::WriteOnly);
buffer.seek(3);
buffer.write("def", 3);
buffer.close();
// byteArray == "abcdef"open(), setBuffer(), setData()도 참조하십시오 .
[virtual noexcept] QBuffer::~QBuffer()
버퍼를 삭제합니다.
[override virtual] bool QBuffer::atEnd() const
QIODevice::atEnd() const를 재구현합니다.
QByteArray &QBuffer::buffer()
QBuffer 의 내부 버퍼에 대한 참조를 반환합니다. 이를 사용하여 QBuffer 이 인지하지 못하는 상태에서 QByteArray 을 수정할 수 있습니다.
setBuffer() 및 data()도 참조하십시오 .
const QByteArray &QBuffer::buffer() const
이는 data()과 동일합니다.
이것은 오버로드된 함수입니다.
[override virtual] bool QBuffer::canReadLine() const
QIODevice::canReadLine() const를 재구현합니다.
[override virtual] void QBuffer::close()
QIODevice::close()을 재구현합니다.
const QByteArray &QBuffer::data() const
버퍼에 포함된 데이터를 반환합니다.
이는 buffer()와 동일합니다.
setData() 및 setBuffer()도 참조하십시오 .
[override virtual] bool QBuffer::open(QIODeviceBase::OpenMode mode)
QIODevice::open(QIODeviceBase::OpenMode mode)를 재구현합니다.
mode 플래그를 사용하여 버퍼를 열고, 성공하면 true 를 반환하며, 그렇지 않으면 false 를 반환합니다.
mode 의 플래그에는 QIODeviceBase::ReadOnly, WriteOnly 또는 ReadWrite 중 하나가 반드시 포함되어야 합니다. 그렇지 않은 경우 오류 메시지가 출력되고 메서드가 실패합니다. 그 외의 모든 경우에는 성공합니다.
QFile::open()와 달리, QBuffer 를 WriteOnly 로 열어도 내용이 잘리지 않습니다. 그러나 pos()는 0 로 설정됩니다. 이러한 동작을 변경하려면 Append 또는 Truncate 를 사용하십시오.
[override virtual] qint64 QBuffer::pos() const
QIODevice::pos() const를 재구현합니다.
[override virtual protected] qint64 QBuffer::readData(char *data, qint64 len)
QIODevice::readData(char *data, qint64 maxSize)를 재구현합니다.
[override virtual] bool QBuffer::seek(qint64 pos)
QIODevice::seek(qint64 양수)를 재구현합니다.
void QBuffer::setBuffer(QByteArray *byteArray)
QBuffer 가 byteArray 가 가리키는 QByteArray 를 내부 버퍼로 사용하도록 합니다. 호출자는 QBuffer 가 소멸되거나 setBuffer()가 호출되어 버퍼가 변경될 때까지 byteArray 가 유효하게 유지되도록 보장해야 합니다. QBuffer 는 QByteArray 에 대한 소유권을 인수하지 않습니다.
isOpen()이 true인 경우 아무 작업도 수행하지 않습니다.
버퍼를 쓰기 전용 모드나 읽기-쓰기 모드로 열고 QBuffer 에 내용을 쓰면, byteArray 가 수정됩니다.
예시:
QByteArray byteArray("abc");
QBuffer buffer;
buffer.setBuffer(&byteArray);
buffer.open(QIODevice::WriteOnly);
buffer.seek(3);
buffer.write("def", 3);
buffer.close();
// byteArray == "abcdef"byteArray 가 nullptr 인 경우, 버퍼는 작업을 수행하기 위해 자체적인 내부 바이트 배열( QByteArray )을 생성합니다. 이 바이트 배열은 처음에는 비어 있습니다.
buffer(), setData(), open()도 참조하십시오 .
void QBuffer::setData(const QByteArray &data)
내부 버퍼의 내용을 ` data`로 설정합니다. 이는 ` data `를 ` buffer()`에 할당하는 것과 동일합니다.
isOpen()가 true인 경우 아무 작업도 수행하지 않습니다.
data() 및 setBuffer()도 참조하십시오 .
void QBuffer::setData(const char *data, qsizetype size)
내부 버퍼의 내용을 data 의 첫 size 바이트로 설정합니다.
참고: Qt 6.5 이전버전에서는 이 함수가 길이를 int 매개변수로 받아, 크기가 잘릴 가능성이 있었습니다.
이 함수는 오버로드된 함수입니다.
[override virtual] qint64 QBuffer::size() const
QIODevice::size() const를 재구현합니다.
[override virtual protected] qint64 QBuffer::writeData(const char *data, qint64 len)
QIODevice::writeData(const char *data, qint64 maxSize)를 재구현합니다.
© 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.