我正在为搅拌机制作渲染作业管理器。我有一个构建渲染作业队列的类,然后单击“开始”,然后开始逐个渲染一个循环。我的问题是waitForFinished()
方法阻止了我的整个程序。但我读过你不应该使用QThread
与QProcess
。这是QProcess和QProcess一起使用的合适时机吗?
这是循环的工作原理。
do{
if(myProcess->state() == QProcess::NotRunning) {
myProcess->setProgram(blenderPath);
myProcess->setArguments(arguments);
myProcess->start();
myProcess->waitForFinished(-1);
//Get rid of current rendering job to prepare for the next job
renderQueueList.pop_front();
}
}while(renderQueueList.empty() != true);
我可以使用一个单独的线程来启动QProcess,那么最好的方法是什么?我读过你对QThread进行抽象或者使用信号和插槽,但是它很混乱,特别是当我需要将参数传递给进程时。
谢谢。
编辑: 我想补充说,进程必须在运行新进程之前完成。它必须按顺序进行。这就是为什么我认为我需要这个过程在自己的线程中运行。
为什么不直接听'finished()'信号呢? – MrEricSir
@MrEricSir你是对的....这是一篇文章http://www.qtcentre.org/threads/26067-Article-How-to-QProcess-in-QThread – Naidu
我很困惑。文章展示了如何在新的主题中创建一个流程,但评论者说这是不好的。这是什么? – LetTheWritersWrite