天道酬勤,学无止境

qdatastream

如何将 QAbstractItemModel 序列化为 QDataStream?(How to serialize a QAbstractItemModel into QDataStream?)

问题 我已经建立了一个 QAbstractItemModel 并用数据填充了它。 我的 QTreeView 小部件正确显示该模型中的每个数据。 现在,我想将该模型序列化存储在一个二进制文件中(然后当然将该二进制文件加载回模型中)。 那可能吗? 回答1 模型序列化的细节在某种程度上取决于模型的实现。 一些问题包括: 完全可用的模型可能不会实现insertRows / insertColumns ,而是更喜欢使用自定义方法。 像QStandardItemModel这样的模型可能具有不同类型的基础项。 反序列化后,原型项目工厂将使用一种原型类型的克隆重新填充模型。 为了防止这种情况,必须公开项目的类型标识符以进行序列化,并提供一种方法来在反序列化时重建正确类型的项目。 让我们看看为标准项目模型实现它的一种方法。 原型多态项类可以通过数据角色公开其类型。 设置此角色后,它应该使用正确的类型重新创建自己。 鉴于此,通用序列化程序是不可行的。 那么让我们看一个完整的例子。 给定模型类型所需的行为必须由参数化序列化程序的特征类表示。 从模型读取数据的方法采用常量模型指针。 修改模型的方法采用非常量模型指针,失败时返回false 。 // https://github.com/KubaO/stackoverflown/tree/master/questions/model

2021-12-12 08:14:39    分类:技术分享    qt   serialization   qabstractitemmodel   qstandarditemmodel   qdatastream

How to serialize a QAbstractItemModel into QDataStream?

I've set up a QAbstractItemModel and filled that with data. My QTreeView widget displays every data in that model properly. Now, I would like to store that model serialized in a binary file (and later of cource load that binary file back into a model). Is that possible?

2021-11-24 22:55:04    分类:问答    qt   serialization   qabstractitemmodel   qstandarditemmodel   qdatastream

保存和加载矢量 Qt & OpenCV(saving and loading vector<Mat> Qt & OpenCV)

问题 我正在使用不支持更新的 FisherFaces 识别器在 Qt 和 openCV 中进行人脸识别,因此我必须保存人脸数据库以在任何更改后重新训练识别器。 这是我的保存代码: save(const std::vector* MatVect){ QFile file("students_dataset.dat"); file.open(QIODevice::WriteOnly); QDataStream out(&file); QVector qimgvect; for (size_t i = 0; i < MatVect->size(); ++i) { cv::Mat matt = MatVect->at(i); QImage img((uchar*)matt.data, matt.cols, matt.rows, matt.step, QImage::Format_Indexed8); qimgvect.push_back(img); } out << qimgvect ; file.flush(); file.close(); } 这是用于加载: load(std::vector* MatVect) { QFile file("students_dataset.dat"); file.open(QIODevice::ReadOnly); QDataStream in(

2021-11-19 19:04:23    分类:技术分享    qt   opencv   mat   qimage   qdatastream

saving and loading vector<Mat> Qt & OpenCV

I'm working on face recognition in Qt & openCV using the FisherFaces recognizer which doesn't support updating so i have to save the faces database to retrain the recognizer after any changes. Here is my code for saving : save(const std::vector* MatVect){ QFile file("students_dataset.dat"); file.open(QIODevice::WriteOnly); QDataStream out(&file); QVector qimgvect; for (size_t i = 0; i < MatVect->size(); ++i) { cv::Mat matt = MatVect->at(i); QImage img((uchar*)matt.data, matt.cols, matt.rows, matt.step, QImage::Format_Indexed8); qimgvect.push_back(img); } out << qimgvect ; file.flush(); file

2021-11-12 00:01:59    分类:问答    qt   opencv   mat   qimage   qdatastream

QDataStream 无法序列化数据(QDataStream unable to serialize data)

问题 我正在尝试按照此处的教程进行操作并序列化 Qt 对象。 这是我的代码: QFile file("/Users/kaustav/Desktop/boo.dat"); if (!file.open(QIODevice::WriteOnly)) { qDebug() << "Cannot open file for writing: " << qPrintable(file.errorString()) << endl; //no error message gets printed return 0; } QDataStream out(&file); // we will serialize the data into the file out.setVersion(QDataStream::Qt_5_3); //adding this makes no difference out << QString("the answer is"); // serialize a string out << (qint32)42; 当我运行这个程序时,文件在我的桌面上创建好了,但它的大小是 0 kB,它是空白的。 当然,当我尝试这个时: QFile file("/Users/kaustav/Desktop/boo.dat"); file.open(QIODevice::ReadOnly)

2021-11-10 05:52:25    分类:技术分享    c++   qt   persistence   object-serialization   qdatastream

QDataStream unable to serialize data

I am trying to follow the tutorial here and serialize Qt objects. Here is my code: QFile file("/Users/kaustav/Desktop/boo.dat"); if (!file.open(QIODevice::WriteOnly)) { qDebug() << "Cannot open file for writing: " << qPrintable(file.errorString()) << endl; //no error message gets printed return 0; } QDataStream out(&file); // we will serialize the data into the file out.setVersion(QDataStream::Qt_5_3); //adding this makes no difference out << QString("the answer is"); // serialize a string out << (qint32)42; When I run this program, the file gets created in my desktop all right, but its size

2021-11-08 21:53:36    分类:问答    c++   qt   persistence   object-serialization   qdatastream

使用 QDataStream 将 QImage 转换为 QByteArray(Converting QImage to QByteArray using QDataStream)

问题 我试图将从 ScreenShot 制作的 QImage 转换为 QByteArray 以通过 QTCPSocket 发送。 当我将 QImage 转换为 QByteArray 并在发送它之前,我尝试反序列化并将其显示在它不能的标签上! 我的错误是什么? 谢谢你的帮助。 QByteArray ImClientShooter::toQByteArray(QImage &img) { QByteArray temp; QDataStream data(&temp, QIODevice::ReadWrite); data « img; return temp; } QByteArray goOn{toQByteArray(sampleQImage)}; //sampleQImage is a QImage Object lbl->setPixmap(QPixmap::fromImage( (QImage::fromData(goOn)))); // QLabel* lbl 从 ScreenShot 制作的 sampleQImage: QGuiApplication::primaryScreen()->grabWindow(0).toImage(); 回答1 任务通过 :D 发件人: QImage img; QByteArray *ba; bool flag{1}

2021-10-27 00:05:08    分类:技术分享    c++   qt   qimage   qbytearray   qdatastream

读取 QDataStream 中的特定对象并计算存储的对象数(Reading specific object in QDataStream and count number of objects stored)

问题 我正在一个二进制文件中写入一些对象,我想读回它们。 为了向您解释我要做什么,我准备了一个简单的示例,其中包含一个 User 类,其中包含孩子的 QString 名称和 QList 名称。 请看下面的代码。 #include "QString" #include "QFile" #include "QDataStream" #include "qdebug.h" class User { protected: QString name; QList<QString> childrens; public: QString getName(){ return name;} QList<QString> getChildrens(){ return childrens;} void setName(QString x) {name = x;} void setChildrens(QList<QString> x) {childrens = x;} //I have no idea of how to get the number of users in "test.db" int countDatabase() { } //I would like to read the user named "pn" without putting all users in memory void

2021-10-26 09:36:04    分类:技术分享    c++   qt   binaryfiles   qdatastream

Converting QImage to QByteArray using QDataStream

Im trying to convert a QImage that maked from ScreenShot to a QByteArray for sending via QTCPSocket. when i convert QImage to QByteArray and before sending it i try to deserialize and show it on label it cant ! what's my mistake? thx for helping. QByteArray ImClientShooter::toQByteArray(QImage &img) { QByteArray temp; QDataStream data(&temp, QIODevice::ReadWrite); data « img; return temp; } QByteArray goOn{toQByteArray(sampleQImage)}; //sampleQImage is a QImage Object lbl->setPixmap(QPixmap::fromImage( (QImage::fromData(goOn)))); // QLabel* lbl sampleQImage maked from ScreenShot

2021-10-25 04:32:51    分类:问答    c++   qt   qimage   qbytearray   qdatastream

Reading specific object in QDataStream and count number of objects stored

I am writting some objects in a binary file and I would like to read them back. To explain you what I am trying to do, I prepared a simple example with a class User that contains the QString name and QList name of childrens. Please see the code below. #include "QString" #include "QFile" #include "QDataStream" #include "qdebug.h" class User { protected: QString name; QList<QString> childrens; public: QString getName(){ return name;} QList<QString> getChildrens(){ return childrens;} void setName(QString x) {name = x;} void setChildrens(QList<QString> x) {childrens = x;} //I have no idea of how

2021-10-20 12:28:01    分类:问答    c++   qt   binaryfiles   qdatastream