您当前的位置:首页 > 实时热点

qdebug,qdebug用法

发布时间:2022-04-28 22:50:44

导读: 1.QT文件操作简介QT中的IO操作通过统一的接口简化了文件与外部设备之间的操作方式。QT中的文件被当作一个特殊的外部设备,文件操作与外部设备相同。 1.io操作主函数界面打开设备:bool open(OpenMode模式)读取数据:

qdebug,qdebug用法

一、QT文件操作简介

QT中的IO操作通过统一的接口简化了文件与外部设备的操作方式,QT中文件被当作一种特殊的外部设备,文件操作与外部设备操作相同。

1、IO操作的主要函数接口

打开设备:bool open(OpenMode mode)

读取数据:QByteArray read(qint64 maxSize)

写入数据:qint64 write(const QByteArray & byteArray)

关闭设备:void close()

IO操作的本质是连续存储空间的数据读写

2、IO设备的类型

顺序存取设备:只能从头开始顺序读写数据,不能指定数据的读写位置

随机存取设备:可以定位到任意位置进行数据的读写

QT中IO设备的继承类图:

qdebug,qdebug用法

3、文件操作实例

QFile是QT中用于文件操作的类,QFile对象对应实际的文件。

void write(QString f){ QFile file(f); if( file.open(QIODevice::WriteOnly | QIODevice::Text) ) { file.write("D.T.Software\n"); file.write("Delphi Tang\n"); file.close(); }} void read(QString f){ QFile file(f); if( file.open(QIODevice::ReadOnly | QIODevice::Text) ) { QByteArray ba = file.readLine(); QString s(ba); qDebug() << s; file.close(); }}

QFileInfo类用于读取文件的属性信息

QFile file(f); QFileInfo info(file); qDebug() << info.exists(); qDebug() << info.isFile(); qDebug() << info.isReadable(); qDebug() << info.isWritable(); qDebug() << info.created(); qDebug() << info.lastRead(); qDebug() << info.lastModified(); qDebug() << info.path(); qDebug() << info.fileName(); qDebug() << info.suffix(); qDebug() << info.size();

QTemporaryFile是QT中的临时文件操作类,用来安全创建全局唯一的临时文件,QTemporaryFile对象销毁时对应的临时文件将被删除,临时文件的打开方式为QIODevice::ReadWrite,临时文件常用于大数据传递或者进程间通信场合。

QTemporaryFile tempFile;

if( tempFile.open() )

{

tempFile.write("D.T.Software");

tempFile.close();

}

二、文本流与数据流

QT中将文件分为文本文件和数据文件,文本文件内容是可读的文本字符,数据文件的内容是二进制数据。

QFile直接支持文本文件和数据文件的操作,主要函数接口如下:

qint64 read( char * data, qint64 maxSize)

QByteArray read( qint64 maxSize)

qint64 write(const char * data, qint64 maxSize)

qint64 write(const QByteArray & byteArray)

为了简化文本文件和数据文件的读写操作,QT提供了QTextStream和QDataStream辅助类。QTextStream可将写入的数据全部转换为可读文本,QDataStream可将写入的数据根据类型转换为二进制数据。

1、QTextStream使用方法

QFile file(f); if( file.open(QIODevice::WriteOnly | QIODevice::Text) ) { QTextStream out(&file); out << QString("D.T.Software") << endl; out << QString("Result: ") << endl; out << 5 << '*' << 6 << '=' << 5 * 6 << endl; file.close(); } if( file.open(QIODevice::ReadOnly | QIODevice::Text) ) { QTextStream in(&file); while( !in.atEnd() ) { QString line = in.readLine(); qDebug() << line; } file.close(); }

2、QDataStream使用方法

QFile file(f); if( file.open(QIODevice::WriteOnly) ) { QDataStream out(&file); out.setVersion(QDataStream::Qt_4_7); out << QString("D.T.Software"); out << QString("Result: "); out << 3.14; file.close(); } if( file.open(QIODevice::ReadOnly) ) { QDataStream in(&file); QString dt = ""; QString result = ""; double value = 0; in.setVersion(QDataStream::Qt_4_7); in >> dt; in >> result; in >> value; file.close(); qDebug() << dt; qDebug() << result; qDebug() << value; }

QDataStream在不同的QT版本中数据流文件格式可能是不同的,如果数据流文件需要在不同版本的QT程序间传递时需要考虑版本问题。

void setVersion(int v)

int version() const

三、QBuffer缓冲区

QT中预定义了缓冲区的类QBuffer,可以将缓冲区看成一种特殊的IO设备,文件流辅助类可以直接用于操作缓冲区。QBuffer缓冲区写入和读取的数据必须是同一种数据类型,不能混合多种数据类型。

QBuffer的使用场合:

A、线程间不同类型的数据传递

B、缓存外部设备中的数据返回

C、数据读取速度小于写入速度

QBuffer使用方法如下:

QByteArray array; QBuffer buffer(&array); if(buffer.open(QIODevice::WriteOnly)) { QDataStream out(&buffer); out << QString("3.1234"); out << QString("scorpio"); out << QString("1234"); buffer.close(); } if(buffer.open(QIODevice::ReadOnly)) { QDataStream in(&buffer); QString name; QString a; QString b; in >> a; in >> name; in >> b; buffer.close(); qDebug() << name; qDebug() << a; qDebug() << b; }

四、目录操作

1、QDir

QT中提供了目录操作类QDir,QDir功能如下:

A、目录分隔符统一使用’/’

B、能够对目录进行任意操作(创建、删除、重命名)

C、能够获取指定目录中的所有条目(文件和文件夹)

D、能够使用过滤字符串获取指定条目

E、能够获取系统中的所有根目录

QDir使用方法如下:

QDir dir; QString path("D:/Download/QT实验分析教程/第2期 — 否极泰来/第34课 - 缓冲区操作与目录操作/代码/34-3"); if(!dir.exists()) { dir.mkdir(path); } else { dir.cd(path); QStringList list = dir.entryList(); for(int i = 0; i < list.count(); i++) { qDebug() << list[i]; } }

计算文件大小

unsigned int FileSize(QString path){ QFileInfo info(path); unsigned int ret = 0; if(info.isFile()) { ret = info.size(); } else if(info.isDir()) { QDir dir(path); QFileInfoList list = dir.entryInfoList(); for(int i = 0; i < list.count(); i++) { if((list[i].fileName() != ".") && (list[i].fileName() != "..")) { ret += FileSize(list[i].absoluteFilePath()); } } } return ret;}

2、QFileSystemWatcher

QT中预定义了用于监控文件和目录变化的类QFileSystemWatcher,

QFileSystemWatcher主要功能如下:

A、能够监控特定目录和文件的状态

B、能够同时对多个文件和目录进行监控

C、当目录或文件发生改变时触发信号

D、通过信号与槽的机制捕捉信号并做出响应

通常要使用QFileSystemWatcher需要自定义文件监视类。

Watcher.h

#ifndef WATCHER_H#define WATCHER_H#include <QObject>#include <QFileSystemWatcher>class Watcher : public QObject{ Q_OBJECTprivate: QFileSystemWatcher m_watcher;private slots: void FileChanged(const QString & path);public: explicit Watcher(QObject *parent = 0); void addPath(QString path);};#endif // WATCHER_H

Watcher.cpp

#include "Watcher.h"#include <QDebug>Watcher::Watcher(QObject *parent) :QObject(parent){ connect(&m_watcher, SIGNAL(fileChanged(QString)), this, SLOT(FileChanged(QString))); connect(&m_watcher, SIGNAL(directoryChanged(QString)), this, SLOT(FileChanged(QString)));}void Watcher::FileChanged(const QString & path){ qDebug() << path << "is changed.";}void Watcher::addPath(QString path){ m_watcher.addPath(path);}

main.cpp

#include <QtCore/QCoreApplication>#include <QString>#include "Watcher.h" int main(int argc, char *argv[]){ QCoreApplication a(argc, argv); Watcher watcher; QString path("D:/QT"); watcher.addPath(path); return a.exec();}

总结:以上内容就是对于qdebug,qdebug用法的详细介绍,文章内容部分转载自互联网,希望对您了解qdebug有帮助和参考的价值。

声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,谢谢。
标签:文件 操作 数据 设备 缓冲区
来顶一下
返回首页
返回首页
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
相关文章
热门点击
  • 小正太牛奶灌溉记,
  • adidas鞋,황진이무료야동
  • 流量君电影下载安装,用流量下载电影
  • 老人去世前拉屎对后代,老人临终前拉屎对后代有什么
  • 什么是美容,
  • 主刀医生一个月的收入,三甲医院主刀医生一个月的收
  • 遮天大帝实力排行,遮天大帝实力排行前50
  • 武汉女子联系乐翠玲,
  • 新闻结构的五部分,新闻结构的五部分包括
  • 金钱草图片和功效,金钱草图片和功效视频
  • 标签云
    鲁能队   期足彩   匹克   督战   德怀特   更衣   蒂安   压阵   到会   吃惊   幼年   热血沸腾   马基   此时此刻   急于   埃托奥   提供各种   勃列日涅夫   农博会   节衣缩食   疯魔   拿了   世界大学生运动会   诺布尔   教宗   同组   卡德罗夫   里尔克   振奋   大族   我看过   战前   都将   低估   这届   幕僚   队医   有约   图瓦   兰卡   亮出   奇耻大辱   讲理   啦啦队员   望而生畏   新华社发   意大利杯   独立日   仪仗队   数码产品   拉希德   伢子   抢下   无果   染红   克瑞   失单   负于   炮轰   福井   征召   养伤   合围   十件   三强   勃朗宁   义无反顾   北体大   运筹帷幄   萨利   苦练   哈姆   花样游泳   大官   以弱胜强   体育明星   马路上   限令   十强   蓄势待发   高度评价   士气   圆月   好人家   策应   弗拉门   高居   合同期   民宅   披甲   中国体育   迷们   怎能不   上蹿下跳   伯顿   北京奥运   要她   一个女孩   有一套   施压
    大爱生活网 | 网站内容来自网络,如有侵权请联系我们,立即删除! | 沪ICP备15034965号