Шаг 98.
Библиотека Qt.
Класс QDataStream

    На этом шаге рассмотрим класс QDataStream.

    Класс QDataStream является гарантом того, что формат, в котором будут записаны данные, останется платформонезависимым и его можно будет считать и обработать на других платформах. Это делает класс незаменимым для обмена данными по сети с использованием сокетных соединений.

    Формат данных, используемый QDataStream, в процессе разработки версии Qt претерпел множество изменений и продолжает изменяться. По этой причине этот класс содержит информацию о версии, и для того чтобы заставить его использовать формат обмена, соответствующий определенной версии Qt, нужно вызвать метод setVersion(), передав ему идентификатор версии. Текущая версия имеет идентификатор Qt_5_2.

    Класс поддерживает большое количество типов данных, к которым относятся, например: QByteArray, QFont, QImage, QMap, QPixmap, QString, QValueList и Variant. Следующий пример записывает в файл объект точки (QPointF), задающей позицию растрового изображения, вместе с самим объектом растрового изображения (QImage):

QFile file("file.bin");
if(file.open(QIODevice::WriteOnly))
{
    QDataStream stream(&file);
    stream.setVersion(QDataStream::Qt_5_2);
    stream << QPointF(30, 30) << QImage("image.png");
    if (stream.status() != QDataStream::Ok)
    {
        qDebug() << "Ошибка записи";
    }
}
file.close();
QPointF pt;
QImage img;
if(file.open(QIODevice::ReadOnly))
{
    QDataStream stream(&file);
    stream.setVersion(QDataStream::Qt_5_2);
    stream >> pt >> img;
    if (stream.status() != QDataStream::Ok)
    {
        qDebug() << "Ошибка чтения файла";
    }
}
file.close();

    Файлы приложения можно взять здесь.

    На следующем шаге рассмотрим технологию "модель-представление".




Предыдущий шаг Содержание Следующий шаг