这个槽函数先获取保存文件名和四个配置项的数值字符串,如果有空字符串就不保存,必须填好保存文件名和所有配置项才进行后面操作。　根据保存文件名定义一个　文具类对象　fileOut,　然后以　“写入、清空旧数据、文本”　三个模式同时打开文件,如果打开失败就提示错误消息　fileOut.errorString()。　如果打开成功,就开始写入,定义临时字节数组　baTemp　,　先构造　ip　配置行的前半截,然后把　strIP　转为本地化字符串,并附加上换行符,这样构造了一行配置文本,写入到新配置文件中。　其他三个配置项的行类似构造,然后都写入到新配置文件中。　写入时,换行符要自己添加,因为　write()　函数是不会自动添加换行符的。　写完四行配置文本之后,用QMessageBox::information()　提示保存配置成功。　我们生成并运行例子,选择项目文件夹中的　testconf.txt　加载,得到如下图效果:　保存配置功能这里不截图了,读者可以自己试试看。　这第一个示例是按行读取文本文件,并分析配置项内容。下面第二个例子学习如何按字节块读取结构体形式的文件头。　7.2.5　BMP文件头解析示例　BMP　是比较简单的图片文件,Windows　画图板默认就是以这种格式保存图片。在MFC　和Windows　编程的书籍里面有不少关于　BMP　文件头的介绍,这里简单介绍一下。BMP　文件的大致框架如下图所示:　我们本小节关注的就是打头的两个结构体　BMPFileHeader　和BMPInfoHeader,后面颜色表和像素点数据就不读取了。　其实所有的文件格式都是由各种各样的结构体组成,BMP　也是这样。BMP　文件首先以一个　BMPFileHeader　开始,共14字节,我们按照　Qt　风格,把BMPFileHeader　定义如下:　//定义文件头　BMPFileHeader,长度14字节　struct　BMPFileHeader　{　quint16　bfType;　//文件类型,原始两字节　'BM'　quint32　bfSize;　//BMP图片文件大小　quint16　bfReserved1;　//保留字段1,数值为　0　quint16　bfReserved2;　//保留字段2,数值为　0　quint32　bfOffBits;　//像素点数据起始位置,相对于　BMPFi