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、第三种虽然不会阻塞,但是有可能在终端上看不到打印出来的信息。所以要在终端显示信息,可以考陵慧燃虑阻塞模式。
#include<Qprocess>
void MainWindow2::program() //打开外部程序
{
this->hide() /枯凯/隐藏型薯当前界面
QProcess::execute("……\\xx.exe") //外部没租唤程序所在路径
}
QT中使用QProcess启用外部程序启用外部程序,并可传参,默认第一个参数是exe路径!启动外部程序的方法有以下两种:1、start()void QProcess::start ( const QString &program, const QStringList &arguments, OpenMode mode = ReadWrite )Starts the program program in a new process, passing the command line arguments in arguments. The OpenMode is set to mode. QProcess will immediately enter the Starting state. If the process starts successfully,QProcess will emit started()otherwise, error() will be emitted.Note that arguments that contain spaces are not passed to the process as separate arguments.Windows: Arguments that contain spaces are wrapped in quotes.Note: Processes are started asynchronously, which means the started() and error() signals may be delayed. Call waitForStarted() to make sure the process has started (or has failed to start) and those signals have been emitted.See also pid(), started(), and waitForStarted().2、使用QProcess::execute(), 不过使用此方法时程序会谈纤则最阻塞直到此方法执行的程序结束后返回,这时竖巧候可使用QProcess和QThread这两个类结合使用的方法来处理,以防止在主 线程中调用而导致阻塞的情况先从QThread继承一个类,重新实现run()函数:答:1、使用QProcess::startDetached()方法,启动外部程序后立即返回;2、使用QProcess::execute(),不过使用此方法时程序会最阻塞直到此方法执行的程序结束后返回,这时候可使用QProcess和QThread这两个类结合使用的方法来处理,以防止在主含棚线程中调用而导致阻塞的情况先从QThread继承一个类,重新实现run()函数:Quote:class MyThread : public QThread{public:void run()}void MyThread::run(){QProcess::execute("notepad.exe")欢迎分享,转载请注明来源:内存溢出
评论列表(0条)