首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏跟Qt君学编程

    QProcess一些小知识

    管道命令的正确使用方法 正确实现使用setStandardOutputProces接口: /* command1 | command2 */ QProcess process1; QProcess

    75320发布于 2019-07-15
  • 来自专栏跟Qt君学编程

    QProcess使用waitForFinished的小坑

    waitForDisconnected(int msecs = 30000) bool QAbstractSocket::waitForReadyRead(int msecs = 30000)   一般我们使用QProcess bool QProcess::waitForFinished(int msecs = 30000)   下列例子由于没有设置waitForFinished超时时间,如果gzip解压时间超过30s就得不到想要的结果 QProcess gzip; gzip.start("gzip –d /opt/etc.zip.gz"); if (!

    2.8K20发布于 2019-10-12
  • 来自专栏跟Qt君学编程

    QProcess实时读取命令输出

    大多数情况下我们使用QProcess都是直接等待命令执行完成返回结果,但是有些情况下需要在获取命令运行中的输出。那该怎么做呢?先上代码。 readyReadStandardOutput()), this, SLOT(onReadData())); m_process.setReadChannel(QProcess void onReadData() { qDebug() << m_process.readAllStandardOutput(); } private: QProcess 由于QProcess继承于QIODevice类,可以使用read,readAll,readLine等接口。

    3.2K10发布于 2019-10-15
  • 来自专栏跟Qt君学编程

    QProcess源码小发现

    Qt君今天看到QProcess源码中发现两个start函数行为不一样。 顺便解决了对于传入的命令带有空格不能正常执行的问题 start函数1 void QProcess::start(const QString &command, OpenMode mode) { */ process.start("hello world.exe"); qDebug() << process.program(); 输出: "hello" start函数2 void QProcess d->program = program; d->arguments = arguments; d->start(mode); } 简单使用小例子: QProcess process; 我们正确做法应该是这样: QProcess process; /* 如执行路径或程序名字带有空格应该使用三个"包含着。

    98130发布于 2020-05-11
  • C++ Qt开发:QProcess进程管理模块

    当你在使用Qt进行跨平台应用程序开发时,经常需要与外部进程进行交互,这时就可以利用Qt的QProcess模块。 QProcess模块提供了启动和控制外部进程的功能,能够执行外部命令、运行其他可执行文件,以及与外部进程进行通信。通过QProcess,可以方便地执行命令行命令、调用系统工具、执行脚本等。 QProcess还可以捕获外部进程的输出,以及监视外部进程的运行状态,从而实现更灵活、高效的进程管理。 setProcessChannelMode(QProcess::ProcessChannelMode mode) 设置进程通信模式,可选值包括QProcess::SeparateChannels和QProcess QProcess类的start()函数有几种不同的重载形式,但最常用的是以下形式:bool QProcess::start( const QString &program, const QStringList

    1.7K10编辑于 2024-03-22
  • 来自专栏小锋学长生活大爆炸

    PyQt5 简单记录QProcess的使用

    官方文档:QProcess — Qt for Python简介QProcess用于启动外部程序并与之通信。个人理解:实际就是启动一个子线程来运行第三方程序。 如果直接在代码里通过subprocess或者其他阻塞类的库运行第三方程序,会造成UI界面卡死;如果自己手写threading,也比较麻烦,还涉及到signal/slot的编写;QProcess就是官方提供的一个线程工具 ,并且不会造成UI卡顿,还提供一些线程控制函数;如果不是很复杂的情况下,用QProcess还是挺好的。 process = QProcess() process.finished.connect(process_finished)process.start("python3", ['dummy_script.py def kill_finished(): pass cmd = 'taskkill -t -f /pid ' + str(process.processId()) p = QProcess

    1.9K10编辑于 2022-08-19
  • 来自专栏生命不息,Codeing不止

    关于void QProcess::start参数问题的解决

    函数原型: void QProcess::start(const QString &program, const QStringList &arguments, OpenMode mode = ReadWrite 解决: 在windows下面需要使用setNativeArguments() 添加引用参数 Qt官方文档描述: void QProcess::start(const QString &program The QProcess object will immediately enter the Starting state. If the process starts successfully, QProcess will emit started(); otherwise, errorOccurred() will be If the QProcess object is already running a process, a warning may be printed at the console, and the

    2K10发布于 2020-07-24
  • 来自专栏跟Qt君学编程

    关于QProcess不能带空格的目录或文件

    在Window系统下使用QProcess的start单独运行一个程序时。当程序路径存在空格会运行不成功的现象,最诡异的是,有时又可以运行。这到底是为什么呢?本文将以源码实现的角度来分析到底是为何? QProcess process; process.start("C:/Users/Tmp/Test Demo.exe"); 2. 解决方案 解决调用程序不能带有空格的问题。 QString &program, const QStringList &arguments, QIODevice::OpenMode mode) 示例: QProcess 查看了QProcess分析得出program与command的区别是,前者不会对空格进行处理,而后者会把命令字符串以空格进行分割。    源码验证疑问 QProcess源码先来一波 static QStringList parseCombinedArgString(const QString &program) { QStringList

    4.2K30发布于 2019-07-16
  • 来自专栏跟Qt君学编程

    解决QProcess使用setProcessEnvironment环境变量不能生效的问题

    使用QProcess运行进程时,为了方便使用运行程序,直接使用程序名字运行。但是这时候需要设置环境变量。可是使用 setProcessEnvironment怎么设置也不能设置成功。 运行QProcess却是一直返回'文件找不到'的现象。下面让我们来窥探究竟吧。 不能正确使用环境变量的代码 QProcess* myProcess = new QProcess(this); QProcessEnvironment env = QProcessEnvironment env.value("PATH")); myProcess->setProcessEnvironment(env); myProcess->start("App.exe"); 可以正确设置环境变量的代码 QProcess 先看下列源代码: bool QProcessPrivate::callCreateProcess(QProcess::CreateProcessArguments *cpargs) { if (

    3.3K30发布于 2019-07-16
  • 来自专栏编码视界

    PySide6 GUI 编程(47): 基于QProcess运行外部命令

    关于 QProcess QProcess 可以用来启动外部程序。这在需要从 Qt 应用中运行第三方工具或命令行程序时非常有用。 通过 QProcess,你可以捕获并处理外部程序的标准输出和标准错误输出。这对于显示外部程序的状态、结果或进行错误处理非常重要。 例如,如果你的应用依赖于某个外部脚本的结果,你可以通过 QProcess 来执行这个脚本并实时获取输出。 QProcess 也可以向运行的外部程序发送输入。 在需要并行处理任务而不阻塞主用户界面线程的情况下,QProcess 可以用来在后台运行重量级任务。这样,GUI 保持响应,同时后台进程处理复杂或耗时的任务。 (self) # 创建 QProcess 对象 self.init_ui() self.setup_connections() def init_ui(self

    83344编辑于 2024-09-18
  • 来自专栏嵌入式音视频

    08 qt进程和网络编程(cs模型)

    进程类为QProcess 定义 用途 Header: #include qmake: QT += core Inherits: QIODevice//继承于IO设备类 1.1 QProcess基本使用 第一步:创建一个QProcess对象 // process = new QProcess(this); //说明启动的额外的应用程序与当前qt应用程序是依赖关系 process = new QProcess state() const//获取当前进程所运行状态 QProcess::ProcessState 定义 数值 用途 QProcess::NotRunning 0 The process is not QProcess::Starting 1 The process is starting, but the program has not yet been invoked. QProcess::Running 2 The process is running and is ready for reading and writing.

    69310编辑于 2023-10-15
  • 来自专栏嵌入式项目开发

    Qt软件开发_解决中文路径无法识别问题

    QProcess执行-目录带中文 QProcess类用于启动外部程序并与它们通信。 运行进程要启动进程,请将要运行的程序的名称和命令行参数作为参数传递给start()。 *myProcess = new QProcess(parent); myProcess->start(program, arguments); 然后,QProcess进入启动状态,程序启动后 ,QProcess进入运行状态并发出started()。 使用QProcess调用启动指定的应用程序,如果这个应用程序在中文路径下。 直接使用QProcess 调用会失败,就就算使用QProcess设置工作路径也没有用,必须切换到应用程序所在的目录下,然后使用相对路径运行。

    3.7K30编辑于 2022-06-15
  • 来自专栏嵌入式项目开发

    QT软件开发: QProcess启动进程完成交互并获取输出

    一、QProcess介绍 QProcess类用于启动外部程序并与它们通信。 QProcess允许将进程视为I/O设备。可以像使用qtcsocket访问网络连接一样对进程进行写入和读取。 因为QProcess继承了QIODevice,所以它还可以用作QXmlReader的输入源,或者用于生成要使用QNetworkAccessManager上载的数据。 当进程退出时,QProcess重新进入NotRunning状态(初始状态),并发出finished()。 如果在任何时间点发生错误,QProcess将发出errorOccurred()信号。还可以调用error()来查找上次发生的错误类型,调用state()来查找当前进程状态。 当前读取通道上有可用数据时,QProcess发出readyRead()。

    10.9K41编辑于 2022-01-12
  • 来自专栏ccf19881030的博客

    Qt5.2中使用ping命令实现Ip扫描功能

    如果使用Qt编程实现,主要会用QThread、QProcess这两个类。关于这两个类的具体用法可以查阅Qt助手或者QT官网。 SHELLPROCESS_H ShellProcess类的实现代码如下: #include "shellprocess.h" #include <QtCore/QtDebug> #include <QtCore/QProcess #ifdef Q_OS_WIN QString strArg = "ping " + ip + " -n 1 -i 2"; exitCode = QProcess ::execute(strArg); #else //其他平台(Linux或Mac) exitCode = QProcess::execute

    3.8K20发布于 2019-04-24
  • 来自专栏Rice嵌入式

    R-Plan上位机-cmd console & rtt ota pack (1)

    功能 目前已经完成了两个功能- 《cmd console》 & 《rtt ota pack》 这两个功能比较相似,都是调用QT的QProcess的API,即调用外部程序。 cmd的核心内容就是QProcess功能的这个API接口和按键捕获,通过两者结合来执行响应的命令。 问题 如何将按键值通过QProcess输入到cmd.exe--比较麻烦 输入,目前还有一些问题--这个问题不太大 演示 rtt ota pack rtt ota pack比较简单,rtt提供了工具- -rt_ota_packaging_tool_cli,直接QProcess调用它就可以了,主要他有一些执行选项要注意。

    62330编辑于 2022-05-10
  • 来自专栏嵌入式项目开发

    QT软件开发: 获取媒体详细信息(视频/音频)

    ffprobe.exe -v quiet -of json -i \"%1\" -show_streams").arg(in_file); qDebug()<<"strCmd:"<<strCmd; QProcess process; // process.setWorkingDirectory(ffmpeg_path); // process.setReadChannel(QProcess::StandardOutput 3.2 widget.h #ifndef WIDGET_H #define WIDGET_H #include <QWidget> #include <QFileDialog> #include <QProcess

    1.6K10编辑于 2022-01-12
  • 来自专栏全栈程序员必看

    qt运行cmd命令_cmd ping大包命令

    mainwindow.cpp文件,主界面实现 #include "mainwindow.h" #include "ui_mainwindow.h" #include <qdebug.h> #include <qprocess.h ->textBrowser->clear(); ui->textBrowser->setText(QStringLiteral("请等待")); ui->textBrowser->update(); QProcess fromLocal8Bit(qByteRead)); qDebug()<<QString::fromLocal8Bit(qByteRead); qDebug()<<"结束点击"; } 下面是会假死的方式 QProcess

    3.2K20编辑于 2022-09-29
  • 来自专栏全栈程序员必看

    Qt播放器学习

    第二步: 在头文件中加入QProcess头文件,在私有成员变量处 QProcess * music_1 在.cpp文件的构造函数或者初始化函数中new一个对象出来,例如: music1 = new QProcess

    1.5K10编辑于 2022-06-28
  • 来自专栏跟Qt君学编程

    windows下获取dns地址

    运行示例 #include <QCoreApplication>#include <QProcess>#include <QDebug>#include <QRegExp> int main(int argc , char *argv[]){ QCoreApplication a(argc, argv); QProcess process; process.start("cmd", QStringList

    6.3K10发布于 2019-07-15
  • 来自专栏Python高效编程

    为你的 Python 程序写个启动工具箱

    os.chdir(os.path.dirname(os.path.realpath(__file__))) 关键点二: 我们使用 QProcess 来管理进程。 首先创建一个 QProcess 对象,调用 startDetched 方法。startDetched 方法可以在主进程之外新开一个进程。 from PyQt5.QtCore import QProcess def open(self): fname = self.get_file() if fname: process = QProcess() process.startDetached('python', [fname]) 关键点三: 重写 Button 按键类以支持右键菜单及一系列操作。

    1.7K20发布于 2019-12-23
领券