QT调用外部程序

QT调用外部程序,第1张

1、通过调用Linux C 函数

    system("calc.exe")

2、通过碧梁QProcess 阻塞调用

    QProcess::execute("calc.exe")/QProcess::startDetached("calc.exe")

3、通过QProcess,非阻塞调用

    QProcess *pro = new QProcess

    pro->start("calc.exe")

注释:

1、前两种方法会阻塞进程,直到计算器程序结束,而第三种方法则不会阻塞进程,可以多任务运行。

2、QT在运行的时候,要启动qws服务尺虚,如果用前两种方法,运行的时候,要新开启一个qws,否则不能运行;而第三种方法,则不需要在开启qws,他和主进程公用一个qws。

3、第三种虽然不会阻塞,但是有可能在终端上看不到打印出来的信息。所以要在终端显示信息,可以考陵慧燃虑阻塞模式。

QT如果是C++版就能够调用C语言的函数,只要你用了相应的库包函。你说调用fork, waitpid, exec, thread_create, socket, connect, accept这些函数不知道每个函数的意思是什么.但是,在QT里这些函数应该在QT里已经都有了的,至少我看笑隐毁到你说的exec,socket,connect,accept这些函数我都用了的,但是不知道你说的fork,waitpid,thread_create是什么函携租数,thread_create如果是建立线程的话,在QT里创建线程更简单。QT里面很少用到C的基本函数,因为QT的功能本身就比较强大,但是QT不是面向过程的集成开发环境,它是面向对象的,如果你只学了C的话,最好再学学C++吧。只有学了C++才能更好的学,不然你学起来非常痛苦,相反如果学了碰备C++就轻松得多,至少比VC++更轻松。

先贴上源代码:

#include<QProcess>

void test6::notepad()

{

QProcess *pro = new QProcess

pro->startDetached("C://Program Files (x86)//Notepad++//notepad++.exe", QStringList())

}

说明:

1 使用Qprocess的startDetached()方法,当前程序关闭时,调用的外部程序姿镇能够照常运行。

2 第一个参数是外部exe路径,当exe路径中含有空格时,就需要用到第二个参数,如果外部应用程序只需要exe这一个就可以打开时,第二个参数写成QStringList()就可以了。

3 当外部应用唯芦程序出了exe还需要其他的文件才能打开时那么将其他文件路径写进QStringList()中。

给出源代码:调用notepad++打开路劲为QString qs的指册带txt文档

void test6::notepad(QString qs)

{

QProcess *pro = new QProcess

pro->startDetached("C://Program Files (x86)//Notepad++//notepad++.exe",QStringList(qs))

}

再给出一个我调用IrFanView查看图片的源代码:

void test6::IrffanView()

{

QProcess *pro = new QProcess

if (!vqs_str.empty())

{

vqs_it = vqs_str.begin() + selecteditem

pro->startDetached("D:\\IrfanView\\i_view32.exe", QStringList(*vqs_it))

}

else

{

pro->startDetached("D:\\IrfanView\\i_view32.exe", QStringList())

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12337642.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-22
下一篇2023-05-22

发表评论

登录后才能评论

评论列表(0条)

    保存