DAWorkbench 0.0.1
DAWorkbench API
载入中...
搜索中...
未找到
DATextReadWriter.h
1#ifndef DATEXTREADWRITER_H
2#define DATEXTREADWRITER_H
3#include <QObject>
4#include <QFile>
5#include <QMutex>
6#include <functional>
7#include "DAUtilsAPI.h"
8class QTextStream;
9namespace DA
10{
11
17class DAUTILS_API DATextReadWriter : public QObject
18{
19 Q_OBJECT
20 DA_DECLARE_PRIVATE(DATextReadWriter)
21public:
23 {
24 NoError = QFileDevice::NoError,
25 ReadError = QFileDevice::ReadError,
26 WriteError = QFileDevice::WriteError,
27 FatalError = QFileDevice::FatalError,
28 ResourceError = QFileDevice::ResourceError,
29 OpenError = QFileDevice::OpenError,
30 AbortError = QFileDevice::AbortError,
31 TimeOutError = QFileDevice::TimeOutError,
32 UnspecifiedError = QFileDevice::UnspecifiedError,
33 RemoveError = QFileDevice::RemoveError,
34 RenameError = QFileDevice::RenameError,
35 PositionError = QFileDevice::PositionError,
36 ResizeError = QFileDevice::ResizeError,
37 PermissionsError = QFileDevice::PermissionsError,
38 CopyError = QFileDevice::CopyError,
39 UserTerminate
40 };
41 Q_ENUM(ErrorCode)
42public:
43 using StringFun = std::function< QString(const QString&) >;
44
45public:
46 DATextReadWriter(QObject* parent = nullptr);
48 void setFileName(const QString& name);
49 // 设置总共读取的行数
50 int getTotalReadLineCount() const;
51 void setTotalReadLineCount(int totalReadLineCount);
52 // 设置一次读取的行数
53 int getReadOnceLineCount() const;
54 void setReadOnceLineCount(int readOnceLineCount);
55 // 设置总共读取的字符数
56 int getTotalReadCharCount() const;
57 void setTotalReadCharCount(int totalReadCharCount);
58 // 设置一次读取的字符数
59 int getReadOnceCharCount() const;
60 void setReadOnceCharCount(int readOnceCharCount);
61 // 设置跳过的行数
62 void setSkipHeader(std::size_t v);
63 int getSkipHeader() const;
64 // 文件是否已经打开
65 bool isOpen() const;
66 // 打开文件
67 bool open(QIODevice::OpenMode mode = QIODevice::ReadOnly | QIODevice::Text);
68 // 最后一次错误信息
69 QString getLastErrorString() const;
70 // 编码
71 QString getCodec() const;
72 void setCodec(const QString& codec);
73 // 处理每次读取的函数指针,默认为nullptr
74 void setStringFun(const StringFun& fun);
75 // 停止读取
76 void setStopRead(bool stopRead);
77 // 错误码转换为文字
78 static QString errorCodeToString(ErrorCode c);
79public slots:
80 // 开始读取数据,读取完成会发射readComplete信号
81 void startReadText();
82 // 插入文本
83 void appendText(const QString& text);
84 // 插入一行
85 void appendLine(const QString& text);
86 // flush
87 bool flush();
88 // 传入一个操作QFile的函数指针,此函数指针用于操作内部保存的QFile
89 void operatorFile(std::function< void(QFile*) > fun);
90private slots:
91 void onStartReadText();
92signals:
98 void readComplete(const QString& str, bool reachEnd);
99
104
109 void finished(int errcode);
110#if 0
111public slots:
112 //追加文本,完成会发射appendTextComplete信号
113 void appendText(const QString & text);
114signals:
115 //appendText完成后返回的信号
116 void appendComplete(bool isSuccess);
117#endif
118};
119
120}
121
122#endif // DATEXTREADWRITETHREAD_H
用于读写文件,但可以多线程调用,通过信号槽传递结果
Definition DATextReadWriter.h:18
void finished(int errcode)
完成信号
void readComplete(const QString &str, bool reachEnd)
完成一次读取会返回此信号
void startedReadText()
开始读取发射的信号,读取完成会发射readComplete信号
ErrorCode
Definition DATextReadWriter.h:23
序列化类都是带异常的,使用中需要处理异常
Definition AppMainWindow.cpp:44