• 4649阅读
  • 2回复

(已解決)在QThread內使用QProcess,但卡住了 [复制链接]

上一主题 下一主题
离线rr_tw
 
只看楼主 倒序阅读 楼主  发表于: 2010-03-24
— 本帖被 XChinux 从 General Qt Programming 移动到本区(2011-01-02) —
各位大大:

小弟看过论坛上的常见问题#14
也照着做,以下是程式码:

标头档
  1. #ifndef BROWSER_H
  2. #define BROWSER_H
  3. #include <QtCore/QProcess>
  4. #include <QtCore/QThread>
  5. class Browser : public QThread
  6. {
  7. public:
  8. Browser();
  9. void run();
  10. void stop();
  11. QProcess *proc;
  12. };
  13. #endif // BROWSER_H


实作的程式码
  1. #include "browser.h"
  2. Browser::Browser()
  3. {}
  4. void Browser::run()
  5. {
  6. proc->execute("/mypath/QtAPP.exe");
  7. }


其中QtAPP.exe是一个用Qt编译出来的可执行档
是个有GUI的浏览器

呼叫该thread的程式码,也就是主程式
  1. class MainAPP : public QObject
  2. {
  3. ...
  4. ...
  5. Browser webThread;
  6. webThread.start();  // *** Wake browser up to work ***
  7. fprintf(stderr, "Called browser up...");

我的MainAPP是一个Qt的程式,没有GUI的那种console程式


呼叫到
webThread.start();  // *** Wake browser up to work ***
这行之后,我的主程式就卡住了
(但子thread叫出来的Browser则可以操作)

然后我把Browser关掉后,整个主程式也一起结束了(exited with code 0)


怎么会用了thread还把主程式卡住啊???
请各位大大帮忙看看,谢谢啊~



PS:刚找到繁体转简体的工具,但有些这边的用语不是很熟还请大大们海涵
[ 此帖被rr_tw在2010-04-19 15:42重新编辑 ]
中華民族,中華聯邦,這主意如何?
离线benbenmajia

只看该作者 1楼 发表于: 2010-03-25
代码太少,也许是你的start()函数不对,也可能是你调用外部程序的流程不对,至于退出程序可能是因为你的browser类写的不对
安然.....
离线rr_tw
只看该作者 2楼 发表于: 2010-04-01
不知为什么好几天登不进来,急呀~
后来发现的确是在main里面call thread以后的code出了问题
才导致程式出问题...

问题已经解决了,在thread使用QProcess是没问题的
中華民族,中華聯邦,這主意如何?
快速回复
限100 字节
 
上一个 下一个