Qt 调用第三方应用程序

QtUI界面被QProcess阻塞(已解决) QProcess类提供了三个函数 1、QProcess::execute() 以堵塞方式的执行shell命令,当命令执行完成后,调用进程才会继续执行。命令输出的任何数据都将转发给调用进程输出(因此无法捕获)。 2、QProcess::start() 以异步方式的执行shell命令,命令输出的数据存储于缓冲区,可以通过readAllStandardOutput()捕获 3、QProcess::startDetached() 以分离的方式执行shell命令,调用进程退出,则分离的进程将继续运行,而不受影响。 阅读详情
Qt 调用第三方程序:


需要包含头文件<QProcess>

下面的三种方法中,前两种是阻塞方式,第三种是非阻塞方式执行。


1、简单情况,调用Windows系统的记事本程序:
Windows记事本的路径在系统环境变量中,不用加参数,所以调用是比较容易的:


{
QProcess *po = new QProcess(this);//如果不在类中,则参数为空
po->start("notepad.exe");
}


2、调用cmd并获取输出信息:
执行一个ping 命令:
{
QProcess p(0);
p.start("cmd",QStringList()<<"/c"<<"ping www.csdn.net");
p.waitForStarted();
p.waitForFinished();
QString strTemp=QString::fromLocal8Bit(p.readAllStandardOutput());


QMessageBox testMessage;
testMessage.setText(strTemp);
testMessage.exec();
}


3、执行带参数的位置不在环境变量路径中的程序:
假设程序路径为"d:\test\a.exe":
执行命令格式为:a.exe -i in.txt -j 1600 -file out.txt;
则代码为:
{
QProcess *po = new QProcess(this);
QString program="d:\test\a.exe";
QStringList argu;
argu.append("-i");
argu.append("in.txt");
argu.append("-j");
argu.append("1600");
argu.append("-file");
argu.append("out.txt");
po->start(program,argu);
}
QProcess:在QT调用外部程序(也是QT写的程序)(1) /绝对路径和相对路径都可以。2、QProcess::startDetached() 启动一个进程,然后使其和当前进程脱离进程的父子关系。windows下要带exe后缀,系统应用如记事本notepad可直接输入打开。linux下的system(),windows下可以用WinExec等函数;(3)通过QProcess,非阻塞调用。(2)通过QProcess,阻塞调用 阅读详情

相关推荐

QT开发调用FDTI ftd2xx.dll库

最近使用FDTI的FT232HL开发产品,通过FT232HL将USB转为FIFO,完成PC端和FPGA硬件的通讯,官方给出的速度能到40MByte/S,原本抱着拿来主义的想法想在网上找些现成的代码,最终发现相关资料非常匮乏,无奈只好自己使用QT调用 ftd2xx.dll完成了桌面应用的设计,本着开源精神这里分享出来供大家参考,因为工作原因不能直接将项目工程开源,因此将驱动部分代码可以分享,如有问题欢迎交流。 1、官方下载相关资料,主要包括驱动安装包、SDK库文件、API手册,这里直接给出链接:D2XX Dr

weixin_51627076的博客 4444

QProcess的非阻塞式用法以及QApplication::processEvents的使用

QProcess的阻塞模式,然后引出这个模式的问题。给出一种解决办法。最后,写了一些使用注意。

yoyofu007的博客 5468

QT打包应用程序文件步骤

QT打包应用程序文件步骤QT应用程序(.exe)打包复制到其他电脑1. 确定编译器2. 选择打包软件3. 采用release版本编译3.1 选择左侧项目(Project)3.2 选择release3.3 编译运行生成.exe应用程序3.4 找到对应的release中的.exe文件4. 打包.exe QT应用程序(.exe)打包复制到其他电脑 在QT程序在自己电脑编译好了后,需要打包给其他人。这里介绍一下详细步骤: 1. 确定编译器 搜了很多相关的打包教程,但是还是会出现“应用程序无法正常启动(0xc000

ColinFhz的博客 5万+

QProcess 使用

需求 Qt 利用ffmpeg 录制视频 并转换为gif 图像,然后上传到服务器 一,QProcess 启动方式 (1),execute execute是阻塞调用, 并且继承了调用者环境变量和工作目录。并且无法与其交互,因为阻塞了。 (2),start start则是异步调用,而非阻塞调用。 可以和外部程序进行交互。 (3),startDetached 运行外部...

qthello 1381

Qt调用第三方应用程序_少桀_新浪博客

1.QProcess 的 start接口可以启动外部程序: QProcess p; p.start("ls -l -h"); 成功启动后把外部进程看作IO设备,可通过标准输入写操作和输出读操作,类似socket通信。 主进程可以通过捕获信号readyReadStandardOutput()来读取输出内容 p.readAllStandardOutput(); 2.和start不同,调用ex...

隆力奇的博客 380

QT调用python文件后封装

qt写项目的时候有一部分采用了python,使用qt调用的外部python文件。 那么问题来了,我现在想封装,用的是windeployqt,封装后的.exe文件并不能调用python文件,该怎么解决最简便。

m0_60200661的博客 413

linux下Qt关闭第三方程序

环境:ubuntu16.04           Qt5.9参考地址:http://man.linuxde.net/pkill最近在开发过程中,需要通过Qt来打开和关闭第三方应用,使用QProcess类返回的PID和使用top命令查看到的进程ID不一样,不知道是不是用错了类方法。后来在网上查到可以用pkill来关闭进程。以下是来自http://man.linuxde.net/pkill对pkill...

yulaker的博客 1833

C++ GUI Programming with Qt4 Second Edition 之 附录B 编译Qt应用程序

使用编译工具可以大大简化Qt应用程序的编译过程。有三种编译途径可选:使用Qt提供的qmake工具;使用第三方编译工具;使用集成开发环境(IDE)。qmake工具可以使用平台无关的.pro文件生成平台相关的makefile文件。该工具包含了调用Qt内置的代码生成工具(moc、uic和rcc)所必需的逻辑规则。本书示例中使用qmake编译的.pro文件,大都相对简单。实际上,qmake提供了很丰富的功能,包括创建可以递归调用其他makefile的makefile文件;根据目标平台打开或关闭某些特定功能。在本附录

lusirking的博客 421

QT常用技术讲解】window系统以CMD命令行方式执行第三方程序及注册表文件命令

在window下(本篇为window10),调用第三方应用,可以调用后台CMD执行的命令行。如果是浏览器调用第三方应用,可以通过自定义域名调用指定的处理脚本,处理脚本再调用第三方软件。本篇只讲解QT程序调用后台CMD执行的命令行的方式,浏览器的方式在其他文章中。

ocy的博客 432

如何在QT应用程序界面中嵌入第三方软件

在软件系统集成中,有时需要集成一些第三方的软件到我们的系统中。一个常用的方法是通过系统调用的方式把第三方软件弹出来,这种方法简单粗暴。另一个方法是将第三方软件嵌入到我们自己的应用程序界面中,本文重点讲解下这种方法如何来实现。一、实现效果如下嵌入的第三方软件是“SQLiteStudio.exe”,一款SQL数据库客户端程序。

menlsh的专栏 2342

qt加载第三方dll_来自第三方DLL的Qt中的调用函数在调试模式下工作,在发行时崩溃...

I use a third-party DLL (FTD2xx) to communicate with an external device. Using Qt4, in debug mode everything works fine, but the release crashes silently after successfully completing a called functio...

weixin_36170009的博客 305

Qt C++中调用python,并将软件打包发布,python含第三方依赖

工作中遇到qt c++调用我的python 代码,并且想要一键打包,这里我根据参考的以及个人实践的结果来简单实现一下。环境:windows系统,QT Creater 4.5, python 3.8(anaconda虚拟环境)

航院小将的博客 9695

Qt调用外部exe注意事项

qt启动外部exe

qq_39764692的博客 1741

Qt程序嵌入第三方软件

Qt嵌入第三方软件实现代码

Kata的博客 1967

QT 调用外部程序

QT调用外部程序有下面几种方法: //1.通过调用linux C 函数 system("opt/myApp"); //2.通过QProcess,阻塞调用 QProcess::execute("/opt/myApp"); //3.通过QProcess,非阻塞调用 QProcess *pro = new QProcess; pro->start("/opt/myApp"); 第一种方法

脚踏实地,仰望星空 2万+

QTQT调用外部exe程序的几种方式

qt调用/内嵌外部EXE文件的几种方式

SXD_SJJ的博客 3万+

Qt中使用QProcess调用第三方程序

Qt调用第三方程序通常使用QProcess进行调用,以下描述QProcess常用的接口。 1. QProcess::startDetached QProcess::startDetached(const QString & program,const QStringList & arguments,const QString &workingDirectory = ...

liu__ting的博客 2651

Qt调用外部程序 Matlab

在本文中,我们以调用 Matlab 为例,展示了如何在 Qt 中启动 Matlab 进程,并获取其输出和错误信息。要在 Qt 中启动 Matlab,我们需要先确保 Matlab 已经正确安装在系统中,并且已经将其路径添加到环境变量中。例如,可以更改要启动的程序和参数,或者使用其他 QProcess 提供的方法来管理进程。,然后设置要启动的程序为 “matlab”(假设系统中已经配置了正确的环境变量),并将 Matlab 脚本 “script.m” 作为参数传递给它。方法启动 Matlab 进程,并使用。

DevProPlus的博客 954
上一篇: Qt vtable error
下一篇: 生成VS2010的BOOST库
itisyu
博客等级 码龄21年 3粉丝 9原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值