DAWorkbench 0.0.1
DAWorkbench API
载入中...
搜索中...
未找到
DAProcess.h
1#ifndef DAPROCESS_H
2#define DAPROCESS_H
3#include <QProcess>
4#include "DAUtilsAPI.h"
5class QThread;
6class QTextStream;
7namespace DA
8{
9
13class DAUTILS_API DAProcess : public QProcess
14{
15 Q_OBJECT
16public:
17 DAProcess(QObject* par = nullptr);
18public slots:
19 // 对start函数的槽映射,可以通过object-with-thread模式跨线程运行
20 void run();
21 void run(QIODevice::OpenMode mode);
22 void run(const QString& command, QIODevice::OpenMode mode);
23 void run(const QString& program, const QStringList& arguments, QIODevice::OpenMode mode);
24 // 设置编码
25 void setEncoding(const char* codecName);
26signals:
33 void processStarandOutput(const QString& str);
40 void processErrorOutput(const QString& str);
41private slots:
42 // 标准输出
43 void onReadyReadStandardOutput();
44 // 标准错误
45 void onReadyReadStandardError();
46
47private:
48 void setEncoding(QTextStream* ss, const QString& codec);
49
50private:
51 QString mCodecName;
52};
53
70class DAUTILS_API DAProcessWithThread : public QObject
71{
72 Q_OBJECT
73public:
74 DAProcessWithThread(QObject* par = nullptr);
76 // 参数
77 void setArguments(const QStringList& arguments);
78 QStringList getArguments() const;
79 // 设置程序
80 void setProgram(const QString& program);
81 QString getProgram() const;
82 //
83public slots:
84 // 运行进程,发射beginRunProcess
85 void runProcess();
86 // kill,发射beginKillProcess
87 void kill();
88 // terminate,发射beginTerminateProcess
89 void terminate();
90signals:
95 void errorOccurred(QProcess::ProcessError error, const QString& errString);
102 void processStarandOutput(const QString& str);
109 void processErrorOutput(const QString& str);
122 void processFinished(int code);
131
132private:
133 DAProcess* mProcess { nullptr };
134 QThread* mThread { nullptr };
135 //
136 QString mProgram;
137 QStringList mArguments;
138 // 记录最后的错误
139 QString mLastError;
140};
141
142}
143
144#endif // DAPROCESS_H
带线程的Process
Definition DAProcess.h:71
void beginRunProcess()
开始运行进程的信号
void beginTerminateProcess()
进程开始terminate
void processStarandOutput(const QString &str)
标准输出
void beginKillProcess()
进程开始kill
void processFinished(int code)
进程结束
void processErrorOutput(const QString &str)
标准错误输出
void processStarted()
进程已经开始
void errorOccurred(QProcess::ProcessError error, const QString &errString)
发生错误
对QProcess的封装
Definition DAProcess.h:14
void processStarandOutput(const QString &str)
标准输出
void processErrorOutput(const QString &str)
标准错误输出
序列化类都是带异常的,使用中需要处理异常
Definition AppMainWindow.cpp:44