我现在用QT4写一个简单的播放器
界面,可以调用mplayer程序来播放音乐文件。但是我现在想把音乐文件的播放时间长度显示在界面上。通过调用setProcessChannelMode(QProcess::MergedChannels)后,再使用readyReadStandardOutput()信号,最后使用readAllStandardOutput()来获得信息。
可是当我使用qDebug()<<readAllStandardOutput();的语句,却输不出任何信息。这是怎么回事啊?我弄了4天都弄不出来。以下是部分代码:myprocess.cpp
Myprocess::Myprocess(QObject * parent) : QProcess(parent){
myproc = new QProcess;
//setProcessChannelMode(QProcess::MergedChannels);
connect(myproc, SIGNAL(
readyReadStandardOutput()), this, SLOT(readStdOut()) );
}
void Myprocess::readStdOut(){
qDebug()<<readAllStandardOutput(); genericRead( readAllStandardOutput() );
}
。
。
部分省略
。
。
bool Myprocess::play(QListWidgetItem *item){
int i,row = listfile1->row(item);
remaining_output.clear();
QString executable ="mplayer";
QStringList arguments;
arguments.append("-identify");
for(i=row;i<rowsfile1;i++)
arguments.append(fileitems1
);
myproc->setProcessChannelMode(QProcess::MergedChannels);
myproc->start(executable, arguments);
if (!myproc->waitForStarted())
return false;
while (!myproc->waitForFinished(20))
{
qApp->processEvents();
}
return EXIT_SUCCESS;
}
以上运行后,qDebug输出的结果是:
" "
" "
" "
都是这样的没有任何信息。我不知道我的代码里哪弄错了,我也参考了smplayer源码,我在smplayer源码里加上了qDebug()<<readAllStandardOutput()调试语句,可以输出很多的信息。可在自己的代码里却老是没有信息出来,真不知道是怎么回事?
我刚接触QT4才2个月,希望得到大家帮帮忙啊!老板催的急啊![ 此贴被linye09在2008-08-05 18:48重新编辑 ]