Process.h 983 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #ifndef PROCESS_H
  2. #define PROCESS_H
  3. #include <QProcess>
  4. #include <QVariant>
  5. class Process : public QProcess
  6. {
  7. Q_OBJECT
  8. Q_PROPERTY(QString applicationDirPath READ applicationDirPath NOTIFY never)
  9. Q_PROPERTY(QString workingDirectory WRITE setWorkingDirectory READ workingDirectory NOTIFY never)
  10. Q_PROPERTY(bool isRunning READ isRunning NOTIFY isRunningChanged)
  11. public:
  12. Process(QObject *parent = 0);
  13. ~Process();
  14. Q_INVOKABLE void start(const QString &program, const QVariantList &arguments);
  15. Q_INVOKABLE QString applicationDirPath();
  16. bool isRunning();
  17. signals:
  18. Q_INVOKABLE void outputRead(QString output);
  19. Q_INVOKABLE void finished(int code);
  20. Q_INVOKABLE void never();
  21. void isRunningChanged(bool isRunning);
  22. private slots:
  23. void onReadyRead();
  24. void onFinished(int code, QProcess::ExitStatus status);
  25. void onStateChanged(QProcess::ProcessState state);
  26. private:
  27. bool wasRunning = false;
  28. };
  29. #endif // PROCESS_H