• 6472阅读
  • 6回复

qt中如何启动另外一个程序 [复制链接]

上一主题 下一主题
离线z000356
 
只看楼主 倒序阅读 楼主  发表于: 2009-03-17
— 本帖被 XChinux 执行加亮操作(2009-03-17) —
   小弟刚刚接触QT ,在VB中可以随意打开一个应用程序,请问各位大侠QT中能实现这一功能吗?
离线z000356
只看该作者 1楼 发表于: 2009-03-17
比如 : 做一个按钮,点击一下就可以启动浏览器
离线XChinux

只看该作者 2楼 发表于: 2009-03-17
QProcess::startDetached() 启动外部可执行程序
QDesktopServices::openUrl()  比如打开一个网址(用默认浏览器)
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线z000356
只看该作者 3楼 发表于: 2009-03-17
谢谢     XChinux  大哥  了
离线z000356
只看该作者 4楼 发表于: 2009-03-17
XChinux  大哥  我用的是QT 2 做嵌入式开发   按你的提示  make时出现“123.cpp:16:22: qprocess.h: 没有那个文件或目录
” ,google一下发现QT2确实没有qprocess.h, 也有些把qt3的移植到qt2,但没有移植过程,XChinux  大哥,你能写个教程吗?
离线z000356
只看该作者 5楼 发表于: 2009-03-17
搞定了,我的QT是2.3.7        具体步骤是把qprocess.h中的98行改为:typedef long PID;  然后把qprocess.h加入到你的工程文件夹,并在头文件中#include "qprocess.h",然后就可以顺利make。因为我的项目只需执行./命令,其他命令大家自己测试吧。贴下测试代码
#include <qdir.h>
#include <qstring.h>
#include <qstringlist.h>
#include <qapplication.h>
#include <qwidget.h>
#include <qvariant.h>
#include "qprocess.h"
class Process:public QWidget
{  
public:
    Process();
    QProcess *pro;
};

Process::Process()
{  
    QStringList qsl;
    qsl.append( "./21" );
    pro= new QProcess(qsl);
    QDir dir("/1");
     pro->setWorkingDirectory(dir);
     if(pro->start()) printf("ok\n");
     else printf("something is wrong\n");
}

int main(int argc, char **argv)
{
    QApplication a(argc,argv);
    Process w;
    a.setMainWidget(&w);
    w.show();
    return a.exec();
}
离线z000356
只看该作者 6楼 发表于: 2009-03-17
又有问题来向XChinux大哥请教了,我想用一个按钮去启动21这个程序,程序代码如下,编译能通过,在板子上一执行就提示段错误,当把按钮那部分去掉就又能正常执行了,请XChinux大哥等高手一定帮我看看啊,小弟不胜感激!
#include <qdir.h>
#include <qstring.h>
#include <qstringlist.h>
#include <qapplication.h>
#include <qwidget.h>
#include <qvariant.h>
#include "qprocess.h"
#include <qpushbutton.h>

class QPushButton;
class Process:public QWidget
{   Q_OBJECT
public:
    Process();
    QProcess *pro;
    QPushButton* PushButton1;
    public slots:
   virtual void close_serialport();
};

Process::Process()
{    PushButton1 = new QPushButton( this, "PushButton1" );
    
    QStringList qsl;
    qsl.append( "./21" );

    pro= new QProcess(qsl);
    QDir dir("/1");

     pro->setWorkingDirectory(dir);
    
    

}

void Process::close_serialport()
{
   if(pro->start()) printf("ok\n");
     else printf("something is wrong\n");
}


int main(int argc, char **argv)
{
    QApplication a(argc,argv);
    Process w;
    a.setMainWidget(&w);
    w.show();
    return a.exec();
}
快速回复
限100 字节
 
上一个 下一个