引用楼主alex_zhf于2008-11-08 17:17发表的 Qt调用shell脚本 :
想在Qt中实现这样的功能:
构造一个槽,在其中调用执行一个shell脚本或者直接嵌入shell命令,想了下没想出来,google也收获不大,有没有高手知道的?
看看我这个类是不是符合你的要求,YXterm类
给个最简单的使用方法如调用 Linux shell命令 ls,查看home/user的文件
m_TermDebug = new YXterm(this);
connect( m_TermDebug, SIGNAL( stopExecuted () ), this, SLOT( slotEndDebug() ) );
m_TermDebug->slotSetCommand("/home/user/");
m_TermDebug->slotAddProgram("ls");
m_TermDebug->slotRunCommand();
运行完后,得到终端输出。
void slotEndDebug()
{
QString str;
if(m_TermDebug)
{
for(int i=0;i<m_TermDebug->resList.size();i++)
str=m_TermDebug->resList.at(i);
qDebug(str.toAscii());
}
}
关于YXterm如果感兴趣,可以看一下
Qt 个人作品展示 » TraceView 一个快速看代码的工具。
http://www.qtcn.org/bbs/read.php?tid=13285然后在源代码 里搜一下YXterm的用法,里边有很多不同的使用,如调用脚本等。
类YXterm
yxterm.zip (5 K) 下载次数:62 类声名:
/****************************************************************************
** File: yxterm.h
**
** Created: Sat Apr 8 16:23:51 2006
** by: wya
**
**Modifier : 2006 11 15 for porting to QT4
**
** WARNING! All changes made by wya
****************************************************************************/
#ifndef YXTERM_H
#define YXTERM_H
#include <QObject>
#include <QProcess>
#include <QStringlist>
//----------------------------------------------------------------------
class YXterm;
class YXterm:public QObject
{
Q_OBJECT
public:
YXterm(QObject * parent );
virtual ~YXterm();
public :
int getcountreOfYXterm();
QStringList errorList;
QStringList resList;
virtual bool isRunning();
virtual bool isErrorEvent();
virtual bool isErrorStop();
virtual void setErrorStop(bool isStop);
virtual void start_init();
void setError(bool e){ isError=e;}
bool getError(){ return isError;}
bool addENV2PATH(const QString & en);
public slots:
virtual void slotReadFromStdout();
virtual void slotReadFromStderr();
virtual void slotReadEndProc(int exitCode ,QProcess::ExitStatus exitStatus );
virtual void slotSetCommand(const QStringList & args);
virtual void slotSetCommand(const QString & args);
virtual void slotAddProgram(const QString & programme);
virtual void slotSetWorkingDirectory(const QString & args);
virtual void slotSetEnvironment(const QString & args);
virtual void slotAddPATH(const QString & args);
virtual void slotRunCommand();
virtual void stopRunCommand();
virtual void slotStarted();
virtual void slotError();
public:
virtual QString getProgram(){return m_programme;}
virtual QStringList getArgsList(){ return m_argsList;}
QProcess * getProcess(){return proc;}
signals:
void stopExecuted();
protected:
virtual void doConnection();
private:
QProcess *proc;
bool isError;
bool isErrorForceStop;
QStringList m_argsList;
QString m_programme;
static int counterOfYXterm;
// QString idMapFileName;
//QString mktagScriptName;
};