• 4671阅读
  • 0回复

Qt app呼叫非Qt app的問題 [复制链接]

上一主题 下一主题
离线rr_tw
 
只看楼主 倒序阅读 楼主  发表于: 2010-04-13
不好意思又来问问题要麻烦大家看看...
主要就是在Qt app内呼叫非Qt写的外部app的问题


先简述我的APP运作环境:
MIPS embedded linux
有DirectFB
有embedded Qt 4.5.2
开发板接续HDMI LCD TV
本人透过开发板的RS-232下指令


我有个Qt写好的APP,姑且叫QtAP.exe吧,有GUI。执行起来主要就是
一个WebKit显示某个URL,例如wwww.google.com

另一个APP是类似一个movie player,会呼叫到DirectFB的library
就称呼为Player.exe吧。


首先是在console下,这样的顺序执行
1. "./QtAP.exe &"
   把它丢到背景执行,尔后开发板的HDMI就可以看到WebKit运作起来了,
   正确的显示google的页面~

2. "./Player.exe IP somemovie.mpg"
   可以看到从Streaming Server来的电影播放(虽然把WebKit盖住...)

单独执行Player.exe也是正常可以放电影



尔后透过QThread内呼叫QProcess...
却一下子画面就变黑,QThread的run函式却是似乎没有被执行到
.h file
  1. #ifndef PLAYERTHREAD_H
  2. #define PLAYERTHREAD_H
  3. #include <QtCore/QProcess>
  4. #include <QtCore/QThread>
  5. class PlayerThread : public QThread
  6. {
  7. public:
  8.   PlayerThread();
  9.   void run();
  10.   void stop();
  11.   void setupRTSP(QString ip, QString filePath);
  12.   QProcess *playerProcess;
  13.   QString commandString;
  14. };


.cpp file
  1. #include "playerthread.h"
  2. PlayerThread::PlayerThread()
  3. {}
  4. void PlayerThread::setupRTSP(QString ip, QString filePath)
  5. {
  6.   fprintf(stderr, "Player thread : Setting up RTSP Player...\n\n");
  7.   playerProcess=new QProcess(this);
  8.   this->commandString.append("./Player.exe ");
  9.   this->commandString.append(ip);
  10.   this->commandString.append(" ");
  11.   this->commandString.append(filePath);
  12.   this->commandString.append(" &");
  13. }
  14. void PlayerThread::run()
  15. {
  16.   fprintf(stderr, "Player thread : Ready to execute: %s\n\n", this->commandString); // 这行没有输出,所以我猜之后的code应该都没被执行
  17.   playerProcess->execute(this->commandString);
  18.   playerProcess->waitForStarted();
  19.   this->setPriority(QThread::LowPriority);
  20. }
  21. void PlayerThread::stop()
  22. {
  23.   playerProcess->terminate();
  24. }


在main内,我是这么呼叫该QThread的:
  1. #include "playerthread.h"
  2. PlayerThread playerT;
  3. playerT.setupRTSP(ip, filePath);
  4. playerT.start();


在Qt内呼叫外部的可执行档案,是否有什么限制?
中華民族,中華聯邦,這主意如何?
快速回复
限100 字节
 
上一个 下一个