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(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 << QApplication::palette();

사실상 애플리케이션의 QPalette 을 바이트 배열로 변환하는 것입니다. 다음은 QByteArray 에서 데이터를 읽는 방법입니다:

    QPalette palette;
    QBuffer buffer(&byteArray);
    buffer.open(QIODevice::ReadOnly);

    QDataStream in(&buffer);
    in >> palette;

QTextStreamQDataStreamQByteArray 을 취하고 뒤에서 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 플래그를 사용하여 버퍼를 열고, 성공하면 true 을 반환하고, 그렇지 않으면 false 을 반환합니다.

mode 의 플래그에는 QIODeviceBase::ReadOnly, WriteOnly 또는 ReadWrite 이 포함되어야 합니다. 그렇지 않으면 오류가 인쇄되고 메서드가 실패합니다. 그 외의 경우에는 성공합니다.

QFile::open()와 달리 WriteOnlyQBuffer 을 열어도 잘리지 않습니다. 그러나 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(문자 *데이터, qint64 maxSize).

[override virtual] bool QBuffer::seek(qint64 pos)

다시 구현합니다: QIODevice::seek(qint64 pos).

void QBuffer::setBuffer(QByteArray *byteArray)

QBufferbyteArray 이 가리키는 QByteArray 을 내부 버퍼로 사용하도록 합니다. 호출자는 QBuffer 이 소멸되거나 setBuffer()가 호출되어 버퍼를 변경할 때까지 byteArray 가 유효한지 확인할 책임이 있습니다. QBufferQByteArray 의 소유권을 가져가지 않습니다.

isOpen()가 참이면 아무 작업도 수행하지 않습니다.

쓰기 전용 모드 또는 읽기-쓰기 모드에서 버퍼를 열고 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"

byteArraynullptr 인 경우 버퍼는 자체 내부 QByteArray 를 생성하여 작업합니다. 이 바이트 배열은 처음에 비어 있습니다.

buffer(), setData(), open()도 참조하세요 .

void QBuffer::setData(const QByteArray &data)

내부 버퍼의 내용을 data 로 설정합니다. 이는 databuffer()에 할당하는 것과 동일합니다.

isOpen()가 참이면 아무 작업도 수행하지 않습니다.

data() 및 setBuffer()도 참조하세요 .

void QBuffer::setData(const char *data, qsizetype size)

이 함수는 오버로드된 함수입니다.

내부 버퍼의 내용을 data 의 첫 번째 size 바이트가 되도록 설정합니다.

참고: 6.5 이전 Qt 버전에서는 이 함수가 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).

© 2025 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.