QT的Qporcess功能的使用

 QT的Qporcess功能的使用_第1张图片

具体实现代码如下:

#include //必须要包含的头文件
#include 

// 创建一个QProgressBar对象
    QProgressBar *progressBar = new QProgressBar(this);
    QProcess *proces;
    process_show=new process;

 // 设置进度条的最小值和最大值
    progressBar->setRange(0, 100);
    //设置位置
    progressBar->setGeometry(10, 30, 300, 30);
    //    // 设置进度条的当前值
    //    progressBar->setValue(50);
    // 设置进度条的文本显示格式
    progressBar->setFormat("当前进度为:%p%");

下面是一些官方文档里面对于QProcess的使用注意事项

QProcess::ProcessError

此枚举描述 报告的不同类型的错误。

QProcess::FailedToStart 0 进程无法启动。调用的程序丢失,或者您可能没有足够的权限来调用该程序。
QProcess::Crashed 1 成功启动后一段时间,进程崩溃了。
QProcess::Timedout 2 最后的等待...() 函数超时。的状态不变,可以尝试调用等待...() 再次。
QProcess::WriteError 4 尝试写入进程时出错。例如,进程可能未运行,或者可能已关闭其输入通道。
QProcess::ReadError 3 尝试从进程中读取时出错。例如,进程可能未运行。
QProcess::UnknownError 5 发生未知错误。这是 () 的默认返回值。

QProcess::ProcessState

此枚举描述了 的不同状态。

QProcess::NotRunning 0 进程未运行。
QProcess::Starting 1 该过程正在启动,但尚未调用该程序。
QProcess::Running 2 进程正在运行,已准备好进行读取和写入。

void QProcess::finished(int exitCode, QProcess::ExitStatus exitStatus)

该过程完成后会发出此信号。是进程的退出代码(仅对正常退出有效),并且是退出状态。该过程完成后,其中的缓冲区仍然完好无损。您仍然可以读取进程在完成之前可能已写入的任何数据。

信号完成在此类中过载。为了使用函数指针语法连接到此信号,Qt提供了一个方便的帮助程序来获取函数指针,如以下示例所示:

connect(process, QOverload::of(&QProcess::finished),
    [=](int exitCode, QProcess::ExitStatus exitStatus){ /* ... */ });

void QProcess::kill()

终止当前进程,使其立即退出。

在Windows上,kill()使用TerminateProcess,在Unix和macOS上,SIGKILL信号被发送到进程。

void QProcess::setupChildProcess()

此函数在子进程上下文中调用,就在程序在 Unix 或 macOS 上执行之前(即,在 之后,但在 之前)。重新实现此函数以执行子进程的最后一分钟初始化。

class SandboxProcess : public QProcess
{
    ...
 protected:
     void setupChildProcess() override;
    ...
};

void SandboxProcess::setupChildProcess()
{
    // Drop all privileges in the child process, and enter
    // a chroot jail.
#if defined Q_OS_UNIX
    ::setgroups(0, 0);
    ::chroot("/etc/safe");
    ::chdir("/");
    ::setgid(safeGid);
    ::setuid(safeUid);
    ::umask(0);
#endif
}

您不能从此函数退出进程(例如,通过调用 exit()。如果需要在程序开始执行之前停止程序,解决方法是发出  finished(),然后调用 exit()。

此函数仅在 Unix 和 macOS 上调用。在Windows和QNX上,它不被调用。

你可能感兴趣的:(QT,qt,开发语言)