Spec-Zone.ru › Qt 5.9

Класс QBuffer

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

Заголовок: #include <QBuffer>
qmake: QT += core
Наследует: QIODevice
  • Список всех членов, включая унаследованные

Примечание: Все функции в этом классе являются повторно-входными.

Открытые функции

QBuffer(QObject *parent = Q_NULLPTR)
QBuffer(QByteArray *byteArray, QObject *parent = Q_NULLPTR)
~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
virtual bool canReadLine() const
virtual void close()
virtual bool open(OpenMode flags)
virtual qint64 pos() const
virtual bool seek(qint64 pos)
virtual qint64 size() const
  • 43 открытых функции унаследованы от QIODevice
  • 32 открытых функции унаследованы от QObject

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

virtual qint64 readData(char *data, qint64 len)
virtual qint64 writeData(const char *data, qint64 len)
  • 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 = Q_NULLPTR)

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

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

QBuffer::QBuffer(QByteArray *byteArray, QObject *parent = Q_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().

QBuffer::~QBuffer()

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

[virtual] bool QBuffer::atEnd() const

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

QByteArray &QBuffer::buffer()

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

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

const QByteArray &QBuffer::buffer() const

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

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

[virtual] bool QBuffer::canReadLine() const

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

[virtual] void QBuffer::close()

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

const QByteArray &QBuffer::data() const

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

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

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

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

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

[virtual] qint64 QBuffer::pos() const

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

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

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

[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.

[virtual] qint64 QBuffer::size() const

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

[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/qt-5.9/qbuffer.html

Spec-Zone.ru

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