Qt中自定义文件格式,读写二进制文件的串行化类的使用
2014-03-25 14:00
393 查看
http://peipengshuai.blog.163.com/blog/static/19012266201071653752316/
Qt中自定义文件格式,读写二进制文件的串行化类的使用
读写二进制文件的串行化类的使用,具体代码如下:
定义一个结构体:
struct PatientInfor
{
QString m_strID;//病人唯一ID号
QString m_strHospitalID;//病例号(医院编号)
QString m_strName;//病人姓名
QString m_strSurName;//病人姓
QString m_strFirstName;//病人名
QString m_strPY;//病人姓名全拼
int m_Sex;
int m_intAge;//病人年龄
QDate m_DateCreateDate;//病人档案建立日期
QDate m_DatePatientHospitalDate;//住院日期
QString m_strAddress;//住址
QString m_strZip;//邮编
QString m_strTele;//电话
QString m_strCreatorID;//创建用户编号
int m_DeleteStateFlage;
QString m_strRemark;//备注
};
写二进制文件:
void wrietFile(QString strTemp)//strTemp写入文件名
{
QFile fileWrite(strTemp);
fileWrite.open(QIODevice::WriteOnly);
QDataStream writeDataStream(&fileWrite);
PatientInfor *patientInfor = new PatientInfor ();
writeDataStream<<patientInfor->m_strID<<patientInfor->m_strHospitalID<<patientInfor->m_strName<<patientInfor->m_strSurName<<patientInfor->m_strFirstName<<patientInfor->m_strPY<<patientInfor->m_Sex<<patientInfor->m_intAge<<patientInfor->m_DateCreateDate<<patientInfor->m_DatePatientHospitalDate<<patientInfor->m_strAddress<<patientInfor->m_strZip<<patientInfor->m_strTele<<patientInfor->m_strCreatorID<<patientInfor->m_DeleteStateFlage<<patientInfor->m_strRemark;
fileWrite.close();
delete patientInfor;
patientInfor = NULL;
}
读二进制文件:
void readFile(QString strTemp) //strTemp 读文件名
{
QFile fileRead(strTemp);
fileRead.open(QIODevice::ReadOnly);
QDataStream readDataStream(&fileRead);
PatientInfor *readPatientInfor = new PatientInfor();
readDataStream>>readPatientInfor->m_strID>>readPatientInfor->m_strHospitalID>>readPatientInfor->m_strName>>readPatientInfor->m_strSurName>>readPatientInfor->m_strFirstName>>readPatientInfor->m_strPY>>readPatientInfor->m_Sex>>readPatientInfor->m_intAge>>readPatientInfor->m_DateCreateDate>>readPatientInfor->m_DatePatientHopitalDate>>readPatientInfor->m_strAddress>>readPatientInfor->m_strZip>>patientInfor->m_strTele>>readPatientInfor->m_strCreatorID>>readPatientInfor->m_DeleteStateFlage>>readPatientInfor->m_strRemark;
fileRead.close();
delete readPatientInfor;
}
注意:QFile 和QDataStream 类联合使用实现了二进制文件读写的串行化,对读写类型的支持也比较多,对自定义文件的读写提供了极大的方便,但是在读写时要严格保持读写的一致性。
Qt中自定义文件格式,读写二进制文件的串行化类的使用
读写二进制文件的串行化类的使用,具体代码如下:
定义一个结构体:
struct PatientInfor
{
QString m_strID;//病人唯一ID号
QString m_strHospitalID;//病例号(医院编号)
QString m_strName;//病人姓名
QString m_strSurName;//病人姓
QString m_strFirstName;//病人名
QString m_strPY;//病人姓名全拼
int m_Sex;
int m_intAge;//病人年龄
QDate m_DateCreateDate;//病人档案建立日期
QDate m_DatePatientHospitalDate;//住院日期
QString m_strAddress;//住址
QString m_strZip;//邮编
QString m_strTele;//电话
QString m_strCreatorID;//创建用户编号
int m_DeleteStateFlage;
QString m_strRemark;//备注
};
写二进制文件:
void wrietFile(QString strTemp)//strTemp写入文件名
{
QFile fileWrite(strTemp);
fileWrite.open(QIODevice::WriteOnly);
QDataStream writeDataStream(&fileWrite);
PatientInfor *patientInfor = new PatientInfor ();
writeDataStream<<patientInfor->m_strID<<patientInfor->m_strHospitalID<<patientInfor->m_strName<<patientInfor->m_strSurName<<patientInfor->m_strFirstName<<patientInfor->m_strPY<<patientInfor->m_Sex<<patientInfor->m_intAge<<patientInfor->m_DateCreateDate<<patientInfor->m_DatePatientHospitalDate<<patientInfor->m_strAddress<<patientInfor->m_strZip<<patientInfor->m_strTele<<patientInfor->m_strCreatorID<<patientInfor->m_DeleteStateFlage<<patientInfor->m_strRemark;
fileWrite.close();
delete patientInfor;
patientInfor = NULL;
}
读二进制文件:
void readFile(QString strTemp) //strTemp 读文件名
{
QFile fileRead(strTemp);
fileRead.open(QIODevice::ReadOnly);
QDataStream readDataStream(&fileRead);
PatientInfor *readPatientInfor = new PatientInfor();
readDataStream>>readPatientInfor->m_strID>>readPatientInfor->m_strHospitalID>>readPatientInfor->m_strName>>readPatientInfor->m_strSurName>>readPatientInfor->m_strFirstName>>readPatientInfor->m_strPY>>readPatientInfor->m_Sex>>readPatientInfor->m_intAge>>readPatientInfor->m_DateCreateDate>>readPatientInfor->m_DatePatientHopitalDate>>readPatientInfor->m_strAddress>>readPatientInfor->m_strZip>>patientInfor->m_strTele>>readPatientInfor->m_strCreatorID>>readPatientInfor->m_DeleteStateFlage>>readPatientInfor->m_strRemark;
fileRead.close();
delete readPatientInfor;
}
注意:QFile 和QDataStream 类联合使用实现了二进制文件读写的串行化,对读写类型的支持也比较多,对自定义文件的读写提供了极大的方便,但是在读写时要严格保持读写的一致性。
相关文章推荐
- QT去读ini文件
- 组合使用QT的资源管理高级功能简化开发过程
- Qt对MAC地址加密写入注册表
- QTP常用的快捷键
- QT官方第三方开源工具
- QT 中的 collect2: ld returned 1 exit status 错误
- 基于ZYNQ7000的交叉编译工具链Qt+OpenCV+ffmpeg等库支持总结
- Qt中QGraphics类坐标映射关系详解(有图有真相,实例讲解)
- Qt使用socket传送图片
- 嵌入式Qt4.7.1安装详解
- Qt窗口与视口坐标转换
- 【转】补充说明:关于Beaglebone black上debian无图形界面的问题及QT的窗口示例
- MQTT 学习笔记
- QTextEdit的paste
- QTextEdit字符串的高亮显示问题
- 用 Qt 生成热图(heat map)
- Qt Undo Framework
- [Qt]用QItemDelegate的来修改QStandardItem字体颜色
- Ubuntu下QT的安装详细教程
- ubuntu下Qt cannot find -lGL错误的解决方法