2015-04-14 44 views
0

我有以下代碼:QProcess中沒有啓動

proc = new QProcess(); 
proc->startDetached("C:\\ffmpeg.exe", QStringList() <<"-i"<< "C:\\pics\\frame%d.png"<< "-r"<< "30" << "-vcodec"<< "ffv1" << "C:\\test.avi"); 
connect(proc,SIGNAL(finished(int)),this,SLOT(finishedFFMPEG(int))); 

出於某種原因,信號完成()和()啓動不會被調用。 test.avi文件正在正確創建。

我在這裏錯過了什麼?

回答

0

它應該是可能像或使用@:

proc = new QProcess(); 
proc->startDetached("C:\\ffmpeg.exe", QStringList() <<"-i"<< "C:\\pics\\frame%d.png "<< "-r"<< "30" << "-vcodec"<< "ffv1" << "C:\\test.avi"); 
connect(proc,SIGNAL(finished(int)),this,SLOT(finishedFFMPEG(int))); 
+0

我曾嘗試//之前,但現在我剛剛刪除第一個參數中的額外空間,現在我的視頻beeing創建正確。然而,我仍然沒有得到完成()信號... – testus

+0

這可能是有用的http://stackoverflow.com/questions/298060/do-i-get-a-finished-slot-if-a-start -qprocess-using-startdetached – demonplus

0

QProcess::startDetached是一個靜態函數。它對QProcess的實例沒有影響。

改爲使用QProcess::start

另外"C:\pics\frame%d.png"中的反斜槓應該被轉義,或者甚至更好地使用斜線("C:/pics/frame%d.png")或C++ 11原始文字(R"(C:\pics\frame%d.png)")。

+0

由於某種原因,QProcess :: start沒有做任何事情。 QProcess :: startDetached正確運行進程,但沒有完成()和開始()的信號被調用 – testus

+0

@testus因爲'startDetached'與'proc'無關。這是一個靜態函數。正確的語法應該是:'QProcess :: startDetached(...)'。它使你的'proc'不受影響。因此信號永遠不會被髮射。 – sbabbi

+0

好吧,我明白了,但是怎麼讓'proc-> start(「C:\\ ffmpeg.exe」,QStringList()<<「 - i」<<「C:\\ pics \\ frame%d.png」 <<「-r」<<「30」<<「-vcodec」<< << ffv1「<<」C:\\ depth.avi「);'沒有做任何事情? – testus