Spec-Zone.ru › Qt 5.11

Класс QBuffer

Класс QBuffer предоставляет интерфейс QIODevice для QByteArray. Подробнее...

Заголовок: #include <QBuffer>
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, int size)

Переопределённые открытые функции

virtual bool atEnd() const override
virtual bool canReadLine() const override
virtual void close() override
virtual bool open(QIODevice::OpenMode flags) override
virtual qint64 pos() const override
virtual bool seek(qint64 pos) override
virtual qint64 size() const override
  • 44 открытых функции унаследованы от QIODevice
  • 32 открытых функции унаследованы от QObject

Переопределённые защищённые функции

virtual qint64 readData(char *data, qint64 len) override
virtual qint64 writeData(const char *data, qint64 len) override
  • 5 защищённых функций унаследованы от QIODevice
  • 9 защищённых функций унаследованы от QObject

Дополнительные унаследованные члены

  • 1 свойство унаследовано от QObject
  • 1 открытый слот унаследован от QObject
  • 6 сигналов унаследованы от QIODevice
  • 2 сигнала унаследованы от QObject
  • 11 статических открытых членов унаследованы от QObject
  • 5 защищённых функций унаследованы от QIODevice
  • 9 защищённых функций унаследованы от QObject

Подробное описание

Класс QBuffer предоставляет интерфейс QIODevice для QByteArray.

QBuffer позволяет получить доступ к QByteArray с использованием интерфейса QIODevice. 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'

По умолчанию, внутренний буфер QByteArray создаётся для вас при создании QBuffer. Вы можете получить доступ к этому буферу напрямую, вызвав buffer(). Вы также можете использовать QBuffer с существующим QByteArray, вызвав setBuffer(), или передав свой массив в конструктор QBuffer.

Вызовите open(), чтобы открыть буфер. Затем вызовите write() или putChar(), чтобы записать в буфер, и read(), readLine(), readAll(), или getChar(), чтобы прочитать из него. size() возвращает текущий размер буфера, и вы можете перейти к произвольным позициям в буфере, вызвав seek(). Когда вы закончите работу с буфером, вызовите close().

Следующий фрагмент кода демонстрирует, как записать данные в QByteArray с использованием QDataStream и QBuffer:

    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;

QTextStream и QDataStream также предоставляют удобные конструкторы, которые принимают QByteArray и которые создают QBuffer за кулисами.

QBuffer излучает readyRead(), когда новые данные поступили в буфер. Подключив этот сигнал, вы можете использовать QBuffer для хранения временных данных перед их обработкой. QBuffer также излучает bytesWritten() каждый раз, когда новые данные были записаны в буфер.

См. также QFile, QDataStream, QTextStream и QByteArray.

Документация по функциям членов

QBuffer::QBuffer(QObject *parent = nullptr)

Создаёт пустой буфер с заданным parent. Вы можете вызвать setData(), чтобы заполнить буфер данными, или открыть его в режиме записи и использовать write().

См. также open().

QBuffer::QBuffer(QByteArray *byteArray, QObject *parent = nullptr)

Создаёт QBuffer, который использует QByteArray, на который указывает byteArray, в качестве своего внутреннего буфера, и с заданным parent. Вызывающий обязан обеспечить, чтобы byteArray оставался валидным до тех пор, пока QBuffer не будет уничтожен или пока setBuffer() не будет вызван для изменения буфера. 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] QBuffer::~QBuffer()

Уничтожает буфер.

[override virtual] bool QBuffer::atEnd() const

Переопределено из QIODevice::atEnd().

QByteArray &QBuffer::buffer()

Возвращает ссылку на внутренний буфер QBuffer. Вы можете использовать его для изменения QByteArray за кулисами QBuffer.

См. также setBuffer() и data().

const QByteArray &QBuffer::buffer() const

Это перегруженная функция.

Это то же самое, что и data().

[override virtual] bool QBuffer::canReadLine() const

Переопределено из QIODevice::canReadLine().

[override virtual] void QBuffer::close()

Переопределено из QIODevice::close().

const QByteArray &QBuffer::data() const

Возвращает данные, содержащиеся в буфере.

Это то же самое, что и buffer().

См. также setData() и setBuffer().

[override virtual] bool QBuffer::open(QIODevice::OpenMode flags)

Переопределено из QIODevice::open().

[override virtual] qint64 QBuffer::pos() const

Переопределено из QIODevice::pos().

[override virtual protected] qint64 QBuffer::readData(char *data, qint64 len)

Переопределено из QIODevice::readData().

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

Переопределено из QIODevice::seek().

void QBuffer::setBuffer(QByteArray *byteArray)

Использует QByteArray, на который указывает byteArray, в качестве внутреннего буфера QBuffer. Вызывающая сторона отвечает за сохранение корректности byteArray до уничтожения QBuffer или до вызова setBuffer() для изменения буфера. 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 равен 0, буфер создаёт собственный внутренний QByteArray для работы. Этот массив байтов изначально пуст.

См. также buffer(), setData() и open().

void QBuffer::setData(const QByteArray &data)

Устанавливает содержимое внутреннего буфера равным data. Это то же самое, что присваивание data к buffer().

Ничего не делает, если isOpen() равно true.

См. также data() и setBuffer().

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

Это перегруженный метод.

Устанавливает содержимое внутреннего буфера равным первым size байтам из data.

[override virtual] qint64 QBuffer::size() const

Переопределено из QIODevice::size().

[override virtual protected] qint64 QBuffer::writeData(const char *data, qint64 len)

Переопределено из QIODevice::writeData().

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.11/qbuffer.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API