
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())
}
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)