QBuffer Class
La classe QBuffer fournit une interface de type « QIODevice » pour un « QByteArray ». En savoir plus...
| En-tête : | #include <QBuffer> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake : | QT += core |
| Hérite de : | QIODevice |
- Liste de tous les membres, y compris les membres hérités
- QBuffer fait partie de la catégorie « Entrée/Sortie et réseau ».
Remarque : toutes les fonctions de cette classe sont réentrantes.
Fonctions publiques
| 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) |
Fonctions publiques réimplémentées
| 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 |
Fonctions protégées réimplémentées
| virtual qint64 | readData(char *data, qint64 len) override |
| virtual qint64 | writeData(const char *data, qint64 len) override |
Description détaillée
QBuffer vous permet d’accéder à un fichier « QByteArray » à l’aide de l’interface QIODevice. Le fichier « QByteArray » est traité comme un fichier standard à accès aléatoire. Exemple :
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'Par défaut, un tampon d'QByteArray interne est créé automatiquement lorsque vous instanciez un objet QBuffer. Vous pouvez accéder directement à ce tampon en appelant la fonction buffer(). Vous pouvez également utiliser QBuffer avec un QByteArray existant en appelant la fonction setBuffer(), ou en passant votre tableau au constructeur de QBuffer.
Appelez open() pour ouvrir le tampon. Appelez ensuite write() ou putChar() pour écrire dans le tampon, et read(), readLine(), readAll() ou getChar() pour y lire des données. size() renvoie la taille actuelle du tampon, et vous pouvez vous positionner à des emplacements arbitraires dans le tampon en appelant seek(). Lorsque vous avez terminé d’accéder au tampon, appelez close().
L'extrait de code suivant montre comment écrire des données dans un fichier « QByteArray » à l'aide de ` QDataStream ` et de `QBuffer` :
QByteArray byteArray;
QBuffer buffer(&byteArray);
buffer.open(QIODevice::WriteOnly);
QDataStream out(&buffer);
out << palette;Concrètement, nous convertissons l’ QPalette de l’application en un tableau d’octets. Voici comment lire les données à partir de l’ QByteArray:
QPalette palette;
QBuffer buffer(&byteArray);
buffer.open(QIODevice::ReadOnly);
QDataStream in(&buffer);
in >> palette;QTextStream QDataStream fournit également des constructeurs pratiques qui prennent un en paramètre et créent un QBuffer en arrière-plan. QByteArray
QBuffer émet le signal ` readyRead()` lorsque de nouvelles données arrivent dans le tampon. En vous connectant à ce signal, vous pouvez utiliser QBuffer pour stocker des données temporaires avant de les traiter. QBuffer émet également le signal ` bytesWritten()` chaque fois que de nouvelles données ont été écrites dans le tampon.
Voir également QFile, QDataStream, QTextStream et QByteArray.
Documentation sur les fonctions membres
[explicit] QBuffer::QBuffer(QObject *parent = nullptr)
Crée un tampon vide à partir de l'parent fournie. Vous pouvez appeler la fonction setData() pour remplir le tampon avec des données, ou l'ouvrir en mode écriture et utiliser la fonction write().
Voir également open().
QBuffer::QBuffer(QByteArray *byteArray, QObject *parent = nullptr)
Construit un QBuffer qui utilise l’ QByteArray pointé par byteArray comme tampon interne, et avec l’ parent donné. L’appelant est chargé de s’assurer que byteArray reste valide jusqu’à la destruction du QBuffer, ou jusqu’à ce que setBuffer() soit appelé pour changer de tampon. QBuffer ne prend pas possession de l’ QByteArray.
Si vous ouvrez le tampon en mode écriture seule ou en mode lecture-écriture et que vous écrivez des données dans le QBuffer, le fichier byteArray sera modifié.
Exemple :
QByteArray byteArray("abc");
QBuffer buffer(&byteArray);
buffer.open(QIODevice::WriteOnly);
buffer.seek(3);
buffer.write("def", 3);
buffer.close();
// byteArray == "abcdef"Voir également open(), setBuffer() et setData().
[virtual noexcept] QBuffer::~QBuffer()
Supprime le tampon.
[override virtual] bool QBuffer::atEnd() const
Réimplémente : QIODevice::atEnd() const.
QByteArray &QBuffer::buffer()
Renvoie une référence au tampon interne de l'QBuffer. Vous pouvez l'utiliser pour modifier l'QByteArray à l'insu de l'QBuffer.
Voir également setBuffer() et data().
const QByteArray &QBuffer::buffer() const
Cela revient à utiliser ` data()`.
Il s'agit d'une fonction surchargée.
[override virtual] bool QBuffer::canReadLine() const
Réimplémente : QIODevice::canReadLine() const.
[override virtual] void QBuffer::close()
Réimplémente : QIODevice::close().
const QByteArray &QBuffer::data() const
Renvoie les données contenues dans le tampon.
Cette fonction est identique à buffer().
Voir également setData() et setBuffer().
[override virtual] bool QBuffer::open(QIODeviceBase::OpenMode mode)
Réimplémente : QIODevice::open(mode QIODeviceBase::OpenMode).
Ouvre le tampon en utilisant les indicateurs de ` mode ` et renvoie ` true ` en cas de succès ; sinon, renvoie ` false`.
Les indicateurs pour mode doivent inclure QIODeviceBase::ReadOnly, WriteOnly ou ReadWrite. Si ce n’est pas le cas, une erreur est affichée et la méthode échoue. Dans tous les autres cas, elle aboutit.
Contrairement à ` QFile::open()`, l'ouverture d'un ` QBuffer ` avec ` WriteOnly ` ne le tronque pas. Cependant, ` pos()` est défini sur ` 0`. Utilisez ` Append ` ou ` Truncate ` pour modifier l'un ou l'autre de ces comportements.
[override virtual] qint64 QBuffer::pos() const
Réimplémente : QIODevice::pos() const.
[override virtual protected] qint64 QBuffer::readData(char *data, qint64 len)
Réimplémentation de : QIODevice::readData(char *data, qint64 maxSize).
[override virtual] bool QBuffer::seek(qint64 pos)
Réimplémente : QIODevice::seek(qint64 pos).
void QBuffer::setBuffer(QByteArray *byteArray)
Permet à la fonction QBuffer d'utiliser l'QByteArray pointé par byteArray comme tampon interne. L'appelant doit s'assurer que byteArray reste valide jusqu'à la destruction de QBuffer, ou jusqu'à ce que la fonction setBuffer() soit appelée pour changer de tampon. La fonction QBuffer ne prend pas possession de QByteArray.
Ne fait rien si isOpen() est vrai.
Si vous ouvrez le tampon en mode écriture seule ou en mode lecture-écriture et que vous écrivez quelque chose dans l’ QBuffer, byteArray sera modifié.
Exemple :
QByteArray byteArray("abc");
QBuffer buffer;
buffer.setBuffer(&byteArray);
buffer.open(QIODevice::WriteOnly);
buffer.seek(3);
buffer.write("def", 3);
buffer.close();
// byteArray == "abcdef"Si byteArray est nullptr, le tampon crée son propre tableau d’octets interne ( QByteArray ) sur lequel il va travailler. Ce tableau d’octets est initialement vide.
Voir également buffer(), setData() et open().
void QBuffer::setData(const QByteArray &data)
Définit le contenu du tampon interne à la valeur « data ». Cela revient à attribuer la valeur « data » à la fonction « buffer() ».
Ne fait rien si isOpen() est vrai.
Voir également data() et setBuffer().
void QBuffer::setData(const char *data, qsizetype size)
Définit le contenu du tampon interne sur les premiers size octets de data.
Remarque : dans les versions de Qt antérieures à la version 6.5, cette fonction prenait la longueur comme paramètre int, ce qui pouvait entraîner une troncature des tailles.
Il s'agit d'une fonction surchargée.
[override virtual] qint64 QBuffer::size() const
Réimplémente : QIODevice::size() const.
[override virtual protected] qint64 QBuffer::writeData(const char *data, qint64 len)
Réimplémentation de : 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.